我试图对String中的每个项目使用不同的RecyclerView,但是无论我单击哪个项目,我的程序始终采用放置在String中的第一个ArrayList

   @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, final int viewType) {
       final View v = LayoutInflater.from(mContext).inflate(R.layout.cardview, null);
        final ContentMain contentMain = mData.get(viewType);

              v.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {

                        Toast.makeText(v.getContext(), contentMain.getMyContent(),
                                Toast.LENGTH_LONG).show();
                    }
             }

        ViewHolder vHolder = new ViewHolder(v);
        return vHolder;
    }

    @Override
    public void onBindViewHolder(final ViewHolder holder, final int position) {
        final ContentMain contentMain = mData.get(position);
        holder.myContent= mData.get(position).getMyContent();
}

最佳答案

您不应该在onClickListener中绑定onCreateViewHolderonCreateViewHolder的目的是构造ViewHolder,而不是将信息绑定到该ViewHolder。

onCreateViewHolder中的以下代码:

final ContentMain contentMain = mData.get(viewType);

由于您的viewType为0,因此将始终返回第一个元素。它没有描述位置。

将此代码移到onBindViewHolder中,如下所示:

  @Override
  public void onBindViewHolder(final ViewHolder holder, final int position) {
        final ContentMain contentMain = mData.get(position);
        holder.myContent= mData.get(position).getMyContent();

        holder.itemView.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                Toast.makeText(v.getContext(), contentMain.getMyContent(),Toast.LENGTH_LONG).show();
             }
        });
 }

07-26 09:41