大家对拖动排序有没有好的实现方法
1.拖拽可以移动item,并且其他item会立即自动补位,快速拖拽也非常流畅 2.item太多时,拖拽到边缘时会自动滚屏. 3.可以自定义被拖拽的的View放大,添加阴影等效果 4.长按启动删除模式,需要自己实现item的删除按钮展示,自己管理删除模式的切换 5.可以放在ScrollView中拖动排序,需要ScrollView继承ListenScrollView,不影响外面控件的大部分事件. 6.可以长按启动item拖拽,也可以触摸直接开始拖动
简单使用方法
dragSortGridView = (DragSortGridView) findViewById(R.id.dragSort1);
//长按item响应该item的拖动排序,默认是触摸就开始拖动
dragSortGridView.setDragModel(DragSortGridView.DRAG_BY_LONG_CLICK);
dragAdapter = new MyAdapter();
dragSortGridView.setAdapter(dragAdapter);
dragAdapter 需要多实现onDataModelMove一个方法,界面排序改变需要提供真实数据排序改变.示例
class MyAdapter extends DragAdapter { @Override public void onDataModelMove(int from, int to) { String s = list.remove(from); list.add(to, s); }
@Override
public int getCount() {
return list.size();
}
@Override
public String getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView;
if (convertView == null) {
FrameLayout frameLayout = new FrameLayout(SecondActivity.this);
convertView = frameLayout;
textView = new TextView(SecondActivity.this);
frameLayout.setPadding(20, 20, 20, 20);
textView.setPadding(20, 100, 20, 100);
frameLayout.addView(textView);
textView.setBackgroundColor(0x33ff00ff);
textView.setGravity(Gravity.CENTER);
} else {
textView = (TextView) ((FrameLayout) convertView).getChildAt(0);
}
textView.setText(getItem(position));
return convertView;
}
}
赞0
踩0