Pro*_*lov 5 java android kotlin android-recyclerview
我想在 RecyclerView 中进行一些滑动操作。我使用 ItemTouchHelper.SimpleCallback 来实现此目的。
但是当我滑动时,一个项目从我的 RecyclerView 中消失。
我该如何解决这个问题?我想显示一些滑动动画并调用 onSwiped() 回调而不删除项目。
val simpleItemTouchCallback = object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT) {
override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean {
return false
}
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, swipeDir: Int) {
val position = viewHolder.adapterPosition
val item = (recyclerView.adapter as DashboardAdapter).getItem(position)
if (swipeDir == ItemTouchHelper.LEFT) {
// Close query
...
} else if (swipeDir == ItemTouchHelper.RIGHT) {
// Take query
...
}
recyclerView.adapter?.notifyDataSetChanged()
}
}
val itemTouchHelper = ItemTouchHelper(simpleItemTouchCallback)
itemTouchHelper.attachToRecyclerView(recyclerView)
Run Code Online (Sandbox Code Playgroud)
小智 0
您可以通过添加到 ViewHolder 字段来做到这一点,该字段将包含有关视图是否可滑动的信息,并在方法 onSwiped 上将其设置为 false,并使用方法 TranslationX(0) 将项目动画到原始 x,您也可以使用 transaltionY(0) 如果你也在垂直滑动。如果您这样做,该项目将无法再次滑动
private ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
Log.e("Swiped","Swiped");
((YourViewHolder) viewHolder).setSwipeable(false);
View item = viewHolder.itemView;
item.animate().translationX(0);
}
@Override
public int getSwipeDirs(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
if(((RemarkAdapter.RemarkViewHolder) viewHolder).isSwipeable()){
return super.getSwipeDirs(recyclerView, viewHolder);
}
else{
return 0;
}
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
504 次 |
| 最近记录: |