Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android開源--DragSortListview

Android開源--DragSortListview

編輯:關於Android編程

 
簡介:DragSortListview是支持通過左右拖拉刪除數據,上下拖拉排序的列表,缺點是當數據
太多時不好下拉.


API簡介:
DragSortListView.DropListener>>該接口監聽上下拖動時,位置變化的監聽器;
DragSortListView.RemoveListener>>該接口監聽左右拖動時,滑動成功刪除數據的接口;


FloatViewManager:是上下拖動時,出現的懸浮框控制 包括聲明和銷毀的控制


DragSortListView:設置拖動的開關;並設置回調的監聽器,因為系統不知道我們數據操作的
具體業務


DragSortController:該控制器實現了FloatViewManager,同時實現了OnTouchListener;
說明,大部分拖動所產生的操作都在Controller裡面.刪除操作的開關也是Controller;
同時,定義刪除和拖拉的模式也在Controller裡面.這裡就存在一個問題,我們所操作的
對象是誰,系統提供了setDragHandleId()方法來設置操作的View;

 

 

/**
 * 	一個簡單的例子 
 * 	@author Lean  @date:2014-10-23  
 */
public class MainActivity extends Activity {

	private DragSortListView mDslv;
	private DragSortController mController;
	
    ArrayAdapter adapter;
    
    private DragSortListView.DropListener onDrop =
            new DragSortListView.DropListener() {
                @Override
                public void drop(int from, int to) {
                    if (from != to) {
                    	//上下拖動時,手指釋放瞬間調用
                        String item = adapter.getItem(from);
                        adapter.remove(item);
                        adapter.insert(item, to);
                    }
                }
            };

    private DragSortListView.RemoveListener onRemove = 
            new DragSortListView.RemoveListener() {
                @Override
                public void remove(int which) {
                	//刪除位置成功調用
                    adapter.remove(adapter.getItem(which));
                }
            };
    
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		mDslv = (DragSortListView) findViewById(android.R.id.list);
		//打開拖動開關,如果不打開 右滑操作沒反應
		mDslv.setDragEnabled(true);
		//設置監聽器
		mDslv.setDropListener(onDrop);
        mDslv.setRemoveListener(onRemove);
		
		mController = buildController(mDslv);
		//設置懸浮框管理器,點擊監聽器
		mDslv.setFloatViewManager(mController);
		mDslv.setOnTouchListener(mController);

        setListAdapter();

	}

	public DragSortController buildController(DragSortListView dslv) {
        DragSortController controller = new DragSortController(dslv);
        //設置拖動對象 id映射View
        controller.setDragHandleId(R.id.drag_rl);
        //設置移除開關
        controller.setRemoveEnabled(true);
        //設置拖動/移除 模式
        controller.setDragInitMode(DragSortController.ON_DRAG);
        controller.setRemoveMode(DragSortController.FLING_REMOVE);
        return controller;
    }

    public void setListAdapter() {
    	String[] array = getResources().getStringArray(R.array.jazz_artist_names);
        ArrayList list = new ArrayList(Arrays.asList(array));
        adapter = new ArrayAdapter(this, R.layout.list_item_handle_left, R.id.text, list);
        mDslv.setAdapter(adapter);
    }
    
}


 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved