標籤:android style blog http color ar java strong sp
項目地址:https://github.com/bauerca/drag-sort-listview
簡介: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<String> 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)); } }; @Overrideprotected 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<String> list = new ArrayList<String>(Arrays.asList(array)); adapter = new ArrayAdapter<String>(this, R.layout.list_item_handle_left, R.id.text, list); mDslv.setAdapter(adapter); } }
Android開源--DragSortListview