如何将自定义元素添加到recyclerview?

时间:2016-10-26 09:29:50

标签: android android-recyclerview

我有RecyclerView数据。我尝试添加自定义的第一个元素。

 if(position == 0) {
        Trend item = items.get(holder.getAdapterPosition());
        int i = 0;
        items.add(i, item);
 }


@Override
public int getItemViewType(int position) {
    if (position == 0) return 1;
    else return 2;
}


@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
   if (viewType == 1) {
        inflater = LayoutInflater.from(parent.getContext());
        return new MyViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_trendsnewuser, parent, false));
    } else {
        inflater = LayoutInflater.from(parent.getContext());
        return new MyViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_trends, parent, false));
    }

我现在复制第一个元素两次。 如何使用我的自定义选项添加自定义行?

1 个答案:

答案 0 :(得分:0)

您应该创建具有不同视图的两个ViewHolder,并在ItemViewType中检查特定位置并根据该特定的ViewHolder。

以下是一些代码。

  public int getItemViewType(int position) {
        if (products.size()==0){
            return 0;
        }else if (products.get(position)== 0){
            return 0;
        }else
            return 1;
        }
        return super.getItemViewType(position);
    }

ViewHolder:

public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
    if (viewType== 0){
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.FIRSTTIMEVIEW,parent,false);
        return new MovieViewHolder(view);
    }else if (viewType==1)
    {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.OTHERVIEWS,parent,false);
        return new OtherViewHolder(view);
    }else{
        return null;
    }
}