我试图对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
中绑定onCreateViewHolder
。 onCreateViewHolder
的目的是构造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();
}
});
}