如何使用一个 RecyclerView Adapter 使用多个布局?

How to use multiple layout using one RecyclerView Adapter?

大家好,我在 recyclerview 中实现了两张卡片,还创建了两个视图持有者,但没有获得适配器代码帮助我。

public class ViewHolder1 extends RecyclerView.ViewHolder {

    private TextView Chatin;

    public ViewHolder1(View v) {
        super(v);
        Chatin = (TextView) v.findViewById(R.id.Chatin);
    }

    public TextView getChatin() {
        return Chatin;
    }

    public void setChatin(TextView chatin) {
        this.Chatin = chatin;
    }


}

其他viewholder同理

是的,我们可以使用多个 cardView。有关参考,请参阅下面的 link 示例适配器:-https://github.com/subbuboyapati/MovieMasti/blob/master/app/src/main/java/com/subbu/moviemasti/adapter/ReviewAdapter.java

这个答案对你也有帮助。

也看看这个教程,http://arjunu.com/2015/10/android-recyclerview-with-different-cardviews/

您可以在 Recycler 视图中显示多张卡片。

1) 覆盖 getItemViewType() 方法

@Override
public int getItemViewType(int position) {

    switch (position) {
        case 0:
            return VIEW_TYPE_ONE;
        case 1:
            return VIEW_TYPE_TWO;
             .
             .
             .
        case n:
            return VIEW_TYPE_N;

        default:
            return DEFAULT_VIEW_TYPE;
    }
}

2)在 onCreateViewHolder() 方法中检查 viewType

 @Override
 public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
   switch (viewType) {
     case  VIEW_TYPE_ONE: 
      // return card one.  
          .
          .
          .
    }
 }

3) 检查 onBindViewHolder() 中的视图类型和位置,并相应地为您的卡片设置数据。

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
     switch (getItemViewType(position)) {
        case VIEW_TYPE_ONE:
          ViewTypeOneViewHolder holderObj= (ViewTypeOneViewHolder) holder;
          //Your implementation for view type one.

          break;
          .
          .
          .
     }
 }