getChildAt(pos)在RecyclerView上返回null

时间:2017-01-20 13:14:59

标签: android android-recyclerview

我正在使用RecyclerView,其中我有行数,每行都有进度条更新。前四行是可见的。当行数大于4时我在我的recyclerview上调用getChildAt(pos)来获取View,它返回null。请帮助。

3 个答案:

答案 0 :(得分:1)

您可以为适配器中的每个项目设置标签:

 @Override
 public void onBindViewHolder(ViewHolder holder, int position) {
    super.onBindViewHolder(holder,position);
    holder.yourView.setTag(yourTag);
}

然后,您可以在活动中使用以下代码:

RecyclerView recyclerView=(RecyclerView)(findViewById(R.id.recycler));
View yourView=(View)(recyclerView.findViewWithTag(YourTag));

答案 1 :(得分:1)

由于recyclerView.getChildAt(position)在上面的场景中给我null,我终于使用下面的行解决了。对于遇到类似情况的人来说,这可能很有用。

RecyclerView.ViewHolder holder = (RecyclerView.ViewHolder)
recyclerView.findViewHolderForAdapterPosition(position);
if (null != holder) {
   holder.itemView.findViewById(R.id.xyz).setVisibility(View.VISIBLE);
}

答案 2 :(得分:0)

当您的回收器视图中有不止一页的数据并且您正在使用 df['total'] = df.filter(like='column').sum(1) 方法时,它会抛出空指针异常。这是因为当位置大于显示器上可见项目的数量时,getChildAt() 将不起作用,因为它只能到达屏幕上显示的视图。

因此,使用 getChildAt() 获取给定位置的视图。