Android findViewHolderForAdapterPostion返回null

Android findViewHolderForAdapterPostion返回null,android,android-recyclerview,material-design,Android,Android Recyclerview,Material Design,我想使用以下代码获取我的RecyclerView的第一个完全可见项的Viewholder: myRecyclerView = (RecyclerView) findViewById(R.id.recycler_demo); myRecyclerView.setHasFixedSize(true); myLayoutManager = new LinearLayoutManager(getApplicationContext()) myRecyclerView.setLayoutManager(m

我想使用以下代码获取我的RecyclerView的第一个完全可见项的Viewholder:

myRecyclerView = (RecyclerView) findViewById(R.id.recycler_demo);
myRecyclerView.setHasFixedSize(true);
myLayoutManager = new LinearLayoutManager(getApplicationContext())
myRecyclerView.setLayoutManager(myLayoutManager);
LinearCardListAdapter myAdapter = new LinearCardListAdapter(getApplicationContext(), initilizeData());
myRecyclerView.setAdapter(myAdapter);
ImageView iv = new ImageView(this);
int adapterPosition = myLayoutManager.findFirstCompletelyVisibleItemPosition();
RecyclerView.ViewHolder visibleViewHolder = myRecyclerView.findViewHolderForAdapterPosition(adapterPosition);
在这种情况下,
visibleViewHolder
为空

我还尝试了
findViewHolderForAdapterPosition
,数字从0到7(我的数据集是从0到7,有8个数据),结果还是空的

有什么解决方案吗?

您可以这样做:

   myRecyclerView.postDelayed(new Runnable()
            {
                @Override
                public void run()
                {
                    if(myRecyclerView.findViewHolderForAdapterPosition(0)!=null )
                    {

                        RecyclerView.ViewHolder visibleViewHolder=myRecyclerView.findViewHolderForAdapterPosition(0);
                    }
                }
            },50);

由于在此之前调用了
notifyDataSetChanged()
,因此会得到
null
,因为布局尚未就绪。请注意,当适配器内容更改时,在下一次布局计算之前,不会更新ViewHolder位置。如果有挂起的适配器更新,此方法的返回值可能与适配器内容不匹配。您可以使用#getAdapterPosition()获取ViewHolder的当前适配器位置@Amy Hi
notifyDataSetChanged()
的可能重复项不在我的代码中,我在问题中忘记删除它,但它不在我的代码中。所以这不是问题所在