要实现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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。