Mon*_*oya 35 android android-recyclerview
我正在尝试实施滑动以删除与Gmail应用"滑动到存档"相同的内容:
我已经尝试了很多教程,但没有一个像gmail一样快,我更喜欢不在外部库上工作.我该怎么做?
编辑:
我的代码到目前为止 -
ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
public boolean onMove(RecyclerView recyclerView,
RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
// final int fromPos = viewHolder.getAdapterPosition();
// final int toPos = viewHolder.getAdapterPosition();
// // move item in `fromPos` to `toPos` in adapter.
return true;// true if moved, false otherwise
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) {
//Remove swiped item from list and notify the RecyclerView
mAdapter.notifyItemRemoved(viewHolder.getLayoutPosition());
}
};
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback);
itemTouchHelper.attachToRecyclerView(mRecyclerView);
Run Code Online (Sandbox Code Playgroud)
我已设法启用滑动手势,但我不知道如何在viewHolder下添加背景和图像.我试图将另一个FrameLayout放在item_XXX.xml文件中但是在滑动时它会抛出整个项目的背景.
Rah*_*ina 33
RecyclerView Swipe的简单代码:
ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT | ItemTouchHelper.DOWN | ItemTouchHelper.UP) {
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
Toast.makeText(ListActivity.this, "on Move", Toast.LENGTH_SHORT).show();
return false;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) {
Toast.makeText(ListActivity.this, "on Swiped ", Toast.LENGTH_SHORT).show();
//Remove swiped item from list and notify the RecyclerView
int position = viewHolder.getAdapterPosition();
arrayList.remove(position);
adapter.notifyDataSetChanged();
}
};
Run Code Online (Sandbox Code Playgroud)
然后使用以下语句为recyclelerView设置回调:
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback);
itemTouchHelper.attachToRecyclerView(rv);
Run Code Online (Sandbox Code Playgroud)
onCreate这是设置“向左滑动删除”的最少代码:
binding.rows.adapter = adapter
ItemTouchHelper(object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT) {
override fun onMove(v: RecyclerView, h: RecyclerView.ViewHolder, t: RecyclerView.ViewHolder) = false
override fun onSwiped(h: RecyclerView.ViewHolder, dir: Int) = adapter.removeAt(h.adapterPosition)
}).attachToRecyclerView(binding.rows)
Run Code Online (Sandbox Code Playgroud)
这假设你的Adapter类有一个removeAt函数。我的看起来像这样:
fun removeAt(index: Int) {
items.removeAt(index) // items is a MutableList
notifyItemRemoved(index)
}
Run Code Online (Sandbox Code Playgroud)
感谢 @RahulRaina 您的 Java 回答!
| 归档时间: |
|
| 查看次数: |
47561 次 |
| 最近记录: |