可拖拽的listView

在packages/apps/Music/src/touchIncepter.java中

該類提供了listview的拖動效果,並提供接口,在程序接口中實現數據的交換即可。

 

  1. package com.and.DragListview;  
  2. import java.util.ArrayList;  
  3. import java.util.List;  
  4. import android.app.ListActivity;  
  5. import android.content.Context;  
  6. import android.os.Bundle;  
  7. import android.view.LayoutInflater;  
  8. import android.view.View;  
  9. import android.view.ViewGroup;  
  10. import android.widget.BaseAdapter;  
  11. import android.widget.ImageView;  
  12. import android.widget.TextView;  
  13. public class DragListview extends ListActivity {     
  14.     MyAdapter adapter;  
  15.     TouchInterceptor list;  
  16.     List<String> arrayText;  
  17.       
  18.     @Override  
  19.     public void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.         setContentView(R.layout.main);  
  22.           
  23.         list = (TouchInterceptor) getListView();//(TouchInterceptor)findViewById(android.R.id.list);  
  24.         getText();  
  25.           
  26.         adapter = new MyAdapter(this);  
  27.         setListAdapter(adapter);  
  28.          
  29.         list.setDropListener(mDropListener);  
  30.      //   list.setRemoveListener(mRemoveListener);        
  31.     }  
  32.     public void getText(){  
  33.         arrayText = new ArrayList<String>();  
  34.         arrayText.add("傳奇");  
  35.         arrayText.add("紅豆");  
  36.         arrayText.add("流年");  
  37.         arrayText.add("棋子");  
  38.     }  
  39.       
  40.     //交換listview的數據  
  41.     private TouchInterceptor.DropListener mDropListener =  
  42.         new TouchInterceptor.DropListener() {  
  43.         public void drop(int from, int to) {  
  44.             String item = arrayText.get(from);  
  45.             arrayText.remove(item);//.remove(from);  
  46.             arrayText.add(to, item);  
  47.             adapter.notifyDataSetChanged();  
  48.         }  
  49.     };  
  50.       
  51.     private TouchInterceptor.RemoveListener mRemoveListener =  
  52.         new TouchInterceptor.RemoveListener() {  
  53.         public void remove(int which) {            
  54.         }  
  55.     };  
  56.       
  57.     class MyAdapter extends BaseAdapter{  
  58.         private LayoutInflater mInflater;  
  59.         Context mContext;  
  60.         public MyAdapter(Context c){  
  61.             mInflater = LayoutInflater.from(c);  
  62.         }  
  63.         public int getCount() {           
  64.             return arrayText.size();  
  65.         }  
  66.         public Object getItem(int arg0) {  
  67.             return arrayText.get(arg0);  
  68.         }  
  69.         public long getItemId(int arg0) {  
  70.             return arg0;  
  71.         }  
  72.         public View getView(int arg0, View contentView, ViewGroup arg2) {  
  73.             ImageView img;  
  74.             TextView text;  
  75.             if(contentView==null){  
  76.                 contentView = mInflater.inflate(R.layout.list_layout, null);   
  77.                 //contentView = mInflater.inflate(R.layout.list_layout,null);  
  78.             }  
  79.             img = (ImageView)contentView.findViewById(R.id.img);  
  80.             img.setBackgroundResource(R.drawable.icon);  
  81.             text = (TextView)contentView.findViewById(R.id.text);  
  82.             text.setText(arrayText.get(arg0).toString());  
  83.               
  84.             return contentView;  
  85.         }  
  86.           
  87.     }  
  88. }  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章