可以參考這篇網路文章: 點選此處,
其實現效果, 如下 :
但是這樣, 雖可以執行, 卻還不是我要的, 原因如下 :
1) 拖曳時, 拖曳物件呈現半透明 ?
2) 拖曳時, 拖曳物件變成藍色 ?
3) 拖曳時, 只有拖拉圖示可以上下拉動 ?
4) 拖曳時, 原 ListItem 還顯示著 ?
所以, 透過修改一些程式碼, 更符合我實際的需求,
1) 在 DragListView.java 中, 搜尋【void onDrag】, 將 windowParams.alpha 透過變數設定, 而非固定 0.5f,
2) 在 DragListView.java 中, 搜尋【Color.BLUE】, 將它用變數替換,
3) 在 DragListView.java 中, 搜尋【View dragger】, 設定 ListItem 只限圖示可拖曳, 還是整個 ListItem 可拖曳,
4) 在 DragListAdapter.java 中, 搜尋【void update】, 將 down 參數紀錄到某個變數(如:dragToNewPosition)中, 然後在 getView method 中, 判斷 position = dragToNewPosition, 則 view invisible(隱藏), 否則 view visible(顯示)
範例主程式, 其部分程式碼, 如下 :
程式碼
// 從程式中新增 DragListView DragListView vDragListView = new DragListView( this ); // 或從 XML 中取得 DragListView DragListView vDragListView = (DragListView)findViewById(R.id.dragListView); // New method: 拖曳時的項目透明度 (0: 完全透明 ~ 1: 完全不透明) vDragListView.setDragAlpha( 1f ); // New method: 拖曳時的項目顏色 (0 為原色) vDragListView.setDragColor( 0 ); // New method: 要進行拖曳, 是否整個項目任何地方都可以拖曳 vDragListView.setDragOnItemAnywhere( true ); vDragListView.setAdapter( vDragListAdapter );
範例結果, 如下 :
以上, 參考看看囉 ^ ^