1.下載檔案https://github.com/terryyamg/DragSortListViewTest
如果要看所有demo,請前往https://github.com/bauerca/drag-sort-listview下載
這裡舉demo裡有刪除的例子-簡化版
匯入library
File -> improt Existing Android Code Into Workspace -> Next
Browse...選擇下載的library -> 打勾Copy projects into workspace-> Finish
建立專案->在專案點右鍵-> Properties-> 點選Android ->Add
選擇library ->OK
出現綠色打勾,點選OK完成匯入
2./res/values/string.xml
3./res/values/ids.xmlDragSortListViewTest - Orioles
- Blue Jays
- Red Sox
- Yankees
- Tigers
- Indians
4./res/values/main.xml --主畫面(注意xmlns:dslv="http://schemas.android.com/apk/res/tw.android的package名稱要與自己的app相同)
5./res/values/list_item_checkable.xml --項目選項(注意tw.android.CheckableLinearLayout的package名稱要與自己的app相同)
6./res/drawable加入兩張圖片delete_x.png與drag.9.png
7.Main.java
package tw.android;
import java.util.ArrayList;
import java.util.Arrays;
import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import com.mobeta.android.dslv.DragSortListView;
import com.mobeta.android.dslv.DragSortListView.RemoveListener;
public class Main extends ListActivity {
private ArrayAdapter<String> adapter;
/*拖拉選項*/
private DragSortListView.DropListener onDrop = new DragSortListView.DropListener() {
public void drop(int from, int to) {
Log.i("from", from+"");
Log.i("to", to+"");
if (from != to) { //選項有移動位置
DragSortListView list = getListView();
String item = adapter.getItem(from);
adapter.remove(item); //移除初始A的位置
adapter.insert(item, to); //將A加入到B的位置
list.moveCheckState(from, to);
}
}
};
/*移除選項*/
private RemoveListener onRemove = new DragSortListView.RemoveListener() {
public void remove(int which) {
Log.i("which", which+"");
DragSortListView list = getListView();
String item = adapter.getItem(which);
adapter.remove(item); //移除選中位置
list.removeCheckState(which);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/*建立選單*/
String[] array = getResources().getStringArray(R.array.mlb_team); //在res/valuse/string.xml 建立選單
ArrayList<String> arrayList = new ArrayList<String>(
Arrays.asList(array));
adapter = new ArrayAdapter<String>(this, R.layout.list_item_checkable, //選單layout樣式
R.id.text, arrayList);
setListAdapter(adapter);
DragSortListView list = getListView();
list.setDropListener(onDrop);
list.setRemoveListener(onRemove);
}
@Override
public DragSortListView getListView() {
return (DragSortListView) super.getListView();
}
}
8.CheckableLinearLayout.java
package tw.android;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.Checkable;
import android.widget.LinearLayout;
public class CheckableLinearLayout extends LinearLayout implements Checkable {
private static final int CHECKABLE_CHILD_INDEX = 1;
private Checkable child;
public CheckableLinearLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
child = (Checkable) getChildAt(CHECKABLE_CHILD_INDEX);
}
public boolean isChecked() {
return child.isChecked();
}
public void setChecked(boolean checked) {
child.setChecked(checked);
}
public void toggle() {
child.toggle();
}
}
移除檔案下載:
https://github.com/terryyamg/DragSortListViewTest
參考來源:
https://github.com/bauerca/drag-sort-listview













沒有留言 :
張貼留言