2017-01-20 35 views
-2

我使用RecyclerView在那里我有行数返回null,每一行都有updates.First四行visible.When行数大于4的进度条,我叫getChildAt(POS)在我的recyclerview获取视图,它返回null。请帮助。getChildAt(POS)上RecyclerView

+0

为什么你感到惊讶吗?代码在哪里? –

+0

请提供一些代码。 –

+0

查看itemPosition = recyclerView.getChildAt(pos); itemPosition为null,当我向下滚动到大于前4个可见行的项目时 –

回答

1

由于recyclerView.getChildAt(位置)是给我在上面的场景null,我终于解决了使用下面的线。对遇到类似情况的人可能会有用。

RecyclerView.ViewHolder holder = (RecyclerView.ViewHolder) 
recyclerView.findViewHolderForAdapterPosition(position); 
if (null != holder) { 
    holder.itemView.findViewById(R.id.xyz).setVisibility(View.VISIBLE); 
} 
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)); 
+0

我需要视图,同时向下滚动recyclerview超出前四个可见行而不是当我点击一个view.So我需要获取基于位置我想 –

+0

请问这样做有什么目的的看法?因为,我真的不明白你要在这里做什么。你能分享一些代码来澄清你的目的吗?如果你只需要获取一个视图,你可以用不同的方式做到这一点。还要考虑你的'RecyclerView'回收每一个'ViewHolder',粗略地说你处理7〜8个'ViewHolder's,数量取决于屏幕大小。 – nullbyte

+0

我有一个名为MyDownloads的屏幕,我使用RecyclerView显示内容。 RecyclerView的每一行都包含一个进度条,用于显示下载过程中的进度。我有一个从哪里维护OnStart,onEnd,OnProgress等不同状态的界面。在OnProgress方法,我第一次试图让使用recyclerView.getChildAt(位置)认为,如果视图不为空,我使用的视图和更新的进展使得进度明显。 –