假設我有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