gpt4 book ai didi

java - RecyclerView - findViewHolderForAdapterPosition() 对于不可见项目返回 null

转载 作者:太空宇宙 更新时间:2023-11-04 12:08:00 25 4
gpt4 key购买 nike

我正在尝试更新 RecyclerView 项目点击的所有 View 。我尝试 findViewHolderForAdapterPosition() 来获取 ViewHolder 但它对于不可见项目返回 null 。据我所知,如果 View 尚未准备好,该方法可能会返回 null,并且如果列表很大,则更新其他不可见列表并不是一个明智的主意。但是,我的列表非常小(始终少于 10 个),我希望在单击项目时访问 View / View 持有者。

我使用以下代码来更新 ViewHolders

        for (int i = 0; i < itemsList.size(); i++) {
if (i != getAdapterPosition()) {

MyViewHolder temp = (MyViewHolder) recyclerView.findViewHolderForAdapterPosition(i);

if (temp != null) {
//update elements
} else {
Log.i(TAG, "temp is null");
}


}
}

任何帮助或线索将不胜感激。

最佳答案

I want to get access to views/viewholders upon an item click.

您可以通过在适配器的 onBindViewHolder() 方法内的任何 View 上设置 onClickListener 来简单地实现此功能。

用于将项目上的单击事件分派(dispatch)到 Activity 或 fragment 进行处理:

1- 在您的适配器类中,定义一个名为 OnItemClickListener 的接口(interface):

public interface OnItemClickListener {
void onItemClicked(int position, AnyOtherDataYouWant data)
}

2-让您的 Activity 或 fragment 实现此接口(interface)

public MyActivity extends AppCompatActivity implements MyAdapter.OnItemClickListener

3- 将 OnItemClickListener 接口(interface)类型的引用传递给适配器的构造函数,并将其保存在名为 listListener 的字段中。

4- 在适配器的 onBindViewHolder 中,在您想要的 View (例如按钮或 TextView )上:

holder.myview.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
listListener.onItemClicked(position, AnyDataYouWant data) ;
}
}) ;

关于java - RecyclerView - findViewHolderForAdapterPosition() 对于不可见项目返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40162585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com