如何从LayoutManager视图中获取适配器项对象(RecyclerView)

时间:2015-08-06 14:02:04

标签: android android-recyclerview

我正在使用RecyclerView我附加了LinearLayoutManagerRecyclerView.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

这对我来说似乎不对。有没有更好的方法呢?

2 个答案:

答案 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)

是您在适配器类中定义的方法。