假设我在 RecyclerView
中有 2 个项目,其中每个项目都有一个 innerrecyclerview
,其中大约有 100 个项目其中两者都是垂直的或任何对现有问题没有任何影响的东西。
我已经在其他 stackoverflow 问题或其他 android 博客上实现了此处可用的方法,但没有帮助。
我有一个关于 onbindviewholder
的问题,项目 1 内部 RecyclerView
的 onbindviewholder
被所有元素调用 ,即100 并且它们没有回收或任何东西,因为 onbindviewholder
没有调用滚动,这应该是正常行为的 RecyclerView
。
如何使 innerrecyclerview
回收,因为所有其他帖子都没有谈到这个。
CourseRVAdapter 或 ParentAdapter
public class CourseRVAdapter extends RecyclerView.Adapter<CourseRVAdapter.SimpleViewHolder> {
private Context mContext;
private List<data> merchantlist;
private List<data> merchantlist2;
private RecyclerView horizontalList;
Typeface MRR;
private Typeface MR;
public class SimpleViewHolder extends RecyclerView.ViewHolder {
public final TextView title;
private HorizontalRVAdapter horizontalAdapter;
public SimpleViewHolder(View view) {
super(view);
Context context = itemView.getContext();
title = (TextView) view.findViewById(R.id.text_1);
horizontalList = (RecyclerView) itemView.findViewById(R.id.my_recycler_view);
horizontalList.setLayoutManager(new CustomLinearLayoutManager(mContext, 3));
horizontalAdapter = new HorizontalRVAdapter(merchantlist, mContext, MR);
horizontalList.setAdapter(horizontalAdapter);
}
}
CourseRVAdapter(List<data> merchantlist2, Context mContext, Typeface MRR, List<data> merchantlist, Typeface MR) {
this.merchantlist2 = merchantlist2;
this.merchantlist = merchantlist;
this.mContext = mContext;
this.MRR = MRR;
this.MR = MR;
}
public SimpleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
final View view = LayoutInflater.from(mContext).inflate(R.layout.merchant_list_header, parent, false);
return new SimpleViewHolder(view);
}
@Override
public void onBindViewHolder(SimpleViewHolder holder, final int position) {
}
@Override
public int getItemCount() {
return merchantlist2.size();
}
}
HorizontalRVAdapter 或 Inneradapter
public class HorizontalRVAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
List<data> merchantlist;
FragmentActivity main;
Context mContext;
Typeface MRR;
public HorizontalRVAdapter(List<data> merchantlist, Context mContext, Typeface MRR) {
this.merchantlist = merchantlist;
this.mContext = mContext;
this.MRR = MRR;
}
private class ItemViewHolder extends RecyclerView.ViewHolder {
private TextView merchantname;
public ItemViewHolder(View itemView) {
super(itemView);
merchantname = (TextView) itemView.findViewById(R.id.merchant_name);
}
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
Context context = parent.getContext();
View itemView = LayoutInflater.from(context).inflate(R.layout.merchant_list_item, parent, false);
ItemViewHolder holder = new ItemViewHolder(itemView);
return holder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder rawHolder, int position) {
ItemViewHolder holder = (ItemViewHolder) rawHolder;
data list = merchantlist.get(position);
holder.merchantname.setText(list.merchantname);
holder.itemView.setTag(position);
Log.d("TAG", "onbindviewholder -- > " + position);
}
@Override
public int getItemCount() {
return merchantlist.size();
}
}
我还没有添加如何为 recyclerview
填充数据。
例如 parentrecyclerview
有 1 或 2 个项目,innerrecyclerview
有 100 个项目。
编辑:
所以在收到第一条评论后,我正在更新我想要实现的目标以获得更好的回应。
我有两个 textview 和一个 Gridrecyclerview,当我滚动 gridrecyclerview 时,我希望这两个 textview 滚动。我想到了通过为这两个 TextView 定义标题和为网格项定义简单的项目持有者来实现这一点。
然后我不得不使用 span 设置 Gridlayoutmanager,但它也包含前两个文本,我最终在该网格中得到了两个 TextView ,这是不需要的。
最佳答案
所以问题出在另一个 VERTICAL RecyclerView
中的 VERTICAL RecyclerView
。 OP 的问题是在滚动嵌套的 RecyclerView
项目时未调用 onBindView()
。
原因很简单:嵌套的 RecyclerView 正在绘制它所有的
View ,因为它的父 RecyclerView
有无限可用空间。
通过使用带有跨度查找的 GridLayoutManager
解决了 OP 的问题(有关详细信息,请参阅 SO answer ),这消除了使用嵌套 RecyclerView
的需要.
关于android - 如何在vertical recyclerview android中实现Vertical Recyclerview?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45876645/