java如何在RecyclerView中使用字符串?
我试图为RecyclerView
中的每个项目使用不同的String
,但我的程序总是使用我在ArrayList
中放置的第一个String
,无论我点击哪个项目:
@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();
}
# 1 楼答案
你不应该在
onCreateViewHolder
中绑定onClickListener
。onCreateViewHolder
的目的是构造ViewHolder,而不是将信息绑定到它在
onCreateViewHolder
中有以下代码:final ContentMain contentMain = mData.get(viewType);
将始终返回第一个元素,因为您的viewType为
0
。它没有描述职位将此代码移动到
onBindViewHolder
中,如下所示:# 2 楼答案
在
onClick()
中获取数据您在创建
ViewHolder
时使用position
获取数据。它将给出错误的position
,因为recyclerview
必须计算布局测量值-编辑:
可能您应该在
ViewHolder
中定义单击侦听器-