RecyclerView的条目拖拽和条目滑动
来源:互联网 发布:尿不湿推荐 知乎 编辑:程序博客网 时间:2024/05/22 14:58
public class MainActivity extends AppCompatActivity implements StartDragListener { private RecyclerView mRecyclerView; private ItemTouchHelper mItemTouchHelper; private MyAdapter mMyAdapter; private ArrayList<String> mListData = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initListData(); mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); mMyAdapter = new MyAdapter(mListData, this); mRecyclerView.setAdapter(mMyAdapter); //条目触摸类 ItemTouchHelper.Callback callback = new MyItemTouchHelperCallback(mMyAdapter); mItemTouchHelper = new ItemTouchHelper(callback); mItemTouchHelper.attachToRecyclerView(mRecyclerView); } private void initListData() { for (int i = 0; i < 50; i++) { mListData.add("我是 " + i); } } @Override public void onStartDrag(RecyclerView.ViewHolder viewHolder) { mItemTouchHelper.startDrag(viewHolder); }}
public class MyItemTouchHelperCallback extends Callback { private OnItemTouchMoveListener mOnItemTouchMoveListener; public MyItemTouchHelperCallback(OnItemTouchMoveListener onItemTouchMoveListener) { this.mOnItemTouchMoveListener = onItemTouchMoveListener; } //判断动作类型 滑动或拖拽 @Override public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { int dagFlag = ItemTouchHelper.UP | ItemTouchHelper.DOWN; int swipFlag = ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT; int flag = makeMovementFlags(dagFlag, swipFlag); return flag; } @Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { if (viewHolder.getItemViewType() != target.getItemViewType()) { return false; } boolean result = mOnItemTouchMoveListener.onItemDragListener(viewHolder.getAdapterPosition(), target.getAdapterPosition()); return result; } @Override public boolean isLongPressDragEnabled() { return true; } @Override public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { mOnItemTouchMoveListener.onItemSwipListener(viewHolder.getAdapterPosition()); }}public class MyAdapter extends Adapter<MyAdapter.MyViewHolder> implements OnItemTouchMoveListener { private ArrayList<String> mListData; private StartDragListener mDragListener; public MyAdapter(ArrayList<String> listData, StartDragListener mDragListener) { this.mDragListener = mDragListener; this.mListData = listData; } @Override public boolean onItemDragListener(int formPosition, int toPosition) { Collections.swap(mListData, formPosition, toPosition); notifyItemMoved(formPosition, toPosition); return false; } @Override public boolean onItemSwipListener(int position) { mListData.remove(position); notifyItemRemoved(position); return false; } public class MyViewHolder extends ViewHolder { private TextView mTextView; public MyViewHolder(View itemView) { super(itemView); mTextView = (TextView) itemView.findViewById(R.id.tv); } } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_list_item, parent, false); return new MyViewHolder(view); } @Override public void onBindViewHolder(final MyViewHolder holder, int position) { holder.mTextView.setText(mListData.get(position)); holder.mTextView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { mDragListener.onStartDrag(holder); } return false; } }); } @Override public int getItemCount() { return mListData.size(); }}
阅读全文
1 0
- RecyclerView的条目拖拽和条目滑动
- RecyclerView实现条目Item拖拽排序与滑动删除
- RecyclerView实现条目Item拖拽排序与滑动删除
- ItemTouchHelper实现RecyclerView条目拖拽移动、滑动删除
- RecyclerView实现条目Item拖拽排序与滑动删除
- RecyclerView实现条目Item拖拽排序与滑动删除
- RecyclerView实现条目Item拖拽排序与滑动删除
- RecyclerView实现条目Item拖拽排序与滑动删除
- RecyclerView 获取条目中EditText的值, 增加条目和删除条目
- 条目有限的RecyclerView 与ScrollView滑动冲突解决(仅限条目有限)
- RecyclerView的条目监听事件
- recyclerview的点击条目删除
- Recyclerview的条目点击事件
- 点击RecyclerView的条目跳转
- RecyclerView的多条目展示
- 简单实现上拉下拉,增加头条目和尾条目的RecyclerView
- 利用RecyclerView实现的一个动画给变item的位置和左右滑动删除该RcyclervView的Item条目
- RecyclerView的多条目和单列双列的实现
- 使用Spring Boot开发Restful程序
- ACM ICPC 2008–2009, NEERC, Problem F Fenwick Tree(找规律,打表) Codeforces Gym 100623F
- strcmp与strncmp()的用法
- JSONObject和JSONArray的使用
- 1033. 旧键盘打字
- RecyclerView的条目拖拽和条目滑动
- jquery form表单序列化注意事项
- 进制转换
- laravel 的验证规则
- 使用委托和事件在类之间传值
- 基于注解的Spring多数据源配置和使用
- java中基本类型和字符串类型之间的转换
- vs2010 c# graphics 坐标系画曲线
- 把input设置成只读模式