首页 > 解决方案 > 如何使用具有异构视图类型的项目触摸助手?

问题描述

我正在关注本教程项目触摸助手示例(实际上只是项目触摸助手部分,因为我希望在滑动时看到带有删除图标的红色背景)。但是我的 recyclerview 中有两种不同的视图类型。我将如何实施它?我被困在这条线上

final View foregroundView = ((CartListAdapter.MyViewHolder) viewHolder).viewForeground;

onChildDraw方法上的RecyclerItemTouchHelper.java

标签: javaandroidandroid-recyclerviewitemtouchhelper

解决方案


所有ViewHolder实例都有一个方法,该方法将返回与创建 ViewHolder 时getItemViewType()适配器最初从其自己的方法返回的值相同的值。getItemViewType()您可以使用此处的值来选择要转换为您自己的 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();
        // ...
    }

    // ...
}

推荐阅读