实际上,我想在我的fragment.class
中获取RecyclerView
中特定项目的视图。为此,我试图在我的adapter
类中设置getter
,然后试图在我的fragment
中访问它,但我无法访问视图。
适配器类编码:
private List<ViewHolder> holder_list=new ArrayList<>();
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder_list.add(holder);
}
public ViewHolder getViewHolder(int position){
return holder_list.get(position);
}
片段代码:
MessageAdapter.ViewHolder holder= msgAdp.getViewHolder(msgAdp.getItemCount()-1);
//Here holder.mMessageView is a text view
Toast.makeText(ctx,holder.mMessageView.getText().toString(),Toast.LENGTH_SHORT).show();
2条答案
按热度按时间lokaqttq1#
这里是最简单的方法
如果你想得到ViewHolder的项目。
或者如果你想获取项目的View对象。
使用你需要的一个。你可以得到视图或ViewHolder。你可以根据需要操纵它们。
编辑:
getChildAt方法是可靠的,因为我也面临着一些时间的问题,可能是它还没有修复。
您可以使用此代码
编辑二:备注
这是一个已知的问题,如果你在设置列表之后调用findViewHolderForAdapterPosition,那么你会得到NullPointerException。
如果已经调用notifyDataSetChanged()但是还没有计算新布局,则该方法将返回null,因为视图的新位置在计算布局之前是未知的。
link
为了解决这个问题,你可以这样做。
lkaoscv72#
经过多次尝试,我找到了一个解决方案,这是一个很简单很短很简单的行代码
recyclerView.scrollToPosition(your position);