您好,登錄后才能下訂單哦!
要實現Spinner選項的拖拽排序與位置記憶,可以通過自定義Adapter來實現。下面是一個簡單的示例代碼:
public class DragSortSpinnerAdapter extends ArrayAdapter<String> implements View.OnTouchListener {
private SparseBooleanArray selectedItems;
private int lastPosition = -1;
public DragSortSpinnerAdapter(Context context, int resource, List<String> objects) {
super(context, resource, objects);
selectedItems = new SparseBooleanArray();
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View view = super.getDropDownView(position, convertView, parent);
view.setTag(position);
view.setOnTouchListener(this);
return view;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
View view = (View) v.getParent();
int position = (int) view.getTag();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
lastPosition = position;
break;
case MotionEvent.ACTION_MOVE:
if(lastPosition != -1 && lastPosition != position) {
String item = getItem(lastPosition);
remove(item);
insert(item, position);
selectedItems.clear();
selectedItems.put(position, true);
notifyDataSetChanged();
lastPosition = position;
}
break;
default:
lastPosition = -1;
break;
}
return true;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
if(selectedItems.get(position)) {
view.setBackgroundColor(Color.LTGRAY);
} else {
view.setBackgroundColor(Color.TRANSPARENT);
}
return view;
}
}
在使用Spinner時,可以使用這個自定義Adapter來實現拖拽排序和位置記憶的功能。當用戶在Spinner選項上按下并移動時,會觸發onTouch方法,Adapter會根據移動的位置重新排序選項,并在getView方法中根據selectedItems來設置選中項的背景色。這樣就可以實現Spinner選項的拖拽排序與位置記憶功能了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。