如何使用具有异构视图类型的项目触摸助手?
How to use item touch helper with heterogeneous view types?
我正在学习本教程 Item touch helper example(实际上只是项目触摸助手部分,因为我希望在滑动时看到红色背景和删除图标)。但是我的 recyclerview 中有两种不同的视图类型。我将如何实施它?我被困在这条线上
final View foregroundView = ((CartListAdapter.MyViewHolder) viewHolder).viewForeground;
在RecyclerItemTouchHelper.java中onChildDraw方法
所有 ViewHolder
实例都有一个方法 getItemViewType()
,当ViewHolder 已创建。您可以使用此处的值来选择要投射到您自己的 ViewHolder 子类中的哪个:
public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
int viewType = viewHolder.getItemViewType();
if (viewType == MY_FIRST_TYPE) {
((MyFirstSubclass) viewHolder).foo();
// ...
} else if (viewType == MY_SECOND_TYPE) {
((MySecondSubclass) viewHolder).bar();
// ...
}
// ...
}
我正在学习本教程 Item touch helper example(实际上只是项目触摸助手部分,因为我希望在滑动时看到红色背景和删除图标)。但是我的 recyclerview 中有两种不同的视图类型。我将如何实施它?我被困在这条线上
final View foregroundView = ((CartListAdapter.MyViewHolder) viewHolder).viewForeground;
在RecyclerItemTouchHelper.java中onChildDraw方法
所有 ViewHolder
实例都有一个方法 getItemViewType()
,当ViewHolder 已创建。您可以使用此处的值来选择要投射到您自己的 ViewHolder 子类中的哪个:
public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
int viewType = viewHolder.getItemViewType();
if (viewType == MY_FIRST_TYPE) {
((MyFirstSubclass) viewHolder).foo();
// ...
} else if (viewType == MY_SECOND_TYPE) {
((MySecondSubclass) viewHolder).bar();
// ...
}
// ...
}