假设我有2项在RecyclerView
,其中每个项目都有一个innerrecyclerview
其中大约有100 项目它都是垂直或任何不具有任何对存在的问题影响。如何在vertical recyclerview android中实现Vertical Recyclerview?
我已经在其他stackoverflow问题或其他安卓博客上实现了可用的方法,但没有帮助。
我有一个关于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个项目。
编辑:
因此让第一个注释后,我更新了我想acheive得到更好的反应。
我有一个两个textview和一个Gridrecyclerview,我希望两个textview滚动时,我滚动gridrecyclerview。我想出了通过为这两个文本视图和网格项目的简单物品定义标题来实现这一点的想法。
然后,我不得不设置Gridlayoutmanager与跨度,但它也包括前两个文本,我结束了两个文本视图在该网格也是不需要的。
为什么你需要嵌套'RecyclerView's?这样做是不好的做法。也许你需要的是不同的东西。如果你想添加你需要的人,这里可能会指出你正确的方向。 – Abbas
@Abbas它不是一个不好的做法googleplay Android应用程序是在他们的主屏幕与verticalrecyclerview内的horizontalrecyclerview。我编辑我的问题 –
那么首先没有办法知道他们是否在垂直RecyclerView内有多个水平的RecyclerView。可以很容易地成为一个很好的旧的ScrollView。其次,这是一个坏主意,因为嵌套的RecyclerViews可能导致内存泄漏。照片上的变化会更好。 – Abbas