我正在使用RecyclerView
我附加了LinearLayoutManager
和RecyclerView.Adapter
RecyclerView conversationList = (RecyclerView)findViewById(R.id.conversationList);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
conversationList.setLayoutManager(layoutManager);
MessagesAdapter adapter = new MessagesAdapter();
conversationList.setAdapter(adapter);
在onBindViewHolder
的{{1}}中我使用setTag将适配器项目对象传递给视图:
RecyclerView.Adapter
我正在迭代 @Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
viewHolder.itemView.setTag(getItem(position));
...
}
的子视图,并使用layoutManager
方法获取所需的对象
getTag
这对我来说似乎不对。有没有更好的方法呢?
答案 0 :(得分:1)
滚动视图时,ViewHolder
可能会重复使用,因此会重置。因此,当你想要它时,你可能会得到一个错误的标签。
答案 1 :(得分:0)
您可以在Adapter类中添加类似内容:
public ArrayList<Objects> getAllTags(){
ArrayList<Objects> arrayList = new ArrayList<>();
for (int i = 0; i < getItemCount() ; i++){
arrayList.add(getItem(i));
}
return arrayList;
}
通过以下方式检索对象:
adapter.getAllObjects();
我认为:
getItem(position)
是您在适配器类中定义的方法。