假设我在一个
我已经在其他stackoverflow问题或其他android博客上实现了这里提供的方法,但都没有帮助。
我有一个关于
如何使
RecyclerView
中有2个项目,每个项目都有一个包含大约100个项目的innerrecyclerview
,它们都是垂直的或者其他任何不会对现有问题产生影响的方向。我已经在其他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 or 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个项目。
编辑:
因此,在得到第一个评论后,我更新了要实现的内容以获得更好的响应。
我有两个文本视图和一个网格recyclerview
,我希望在滚动网格recyclerview
时这两个文本视图也跟随滚动。我通过为这两个文本视图定义头部以及网格项的简单项持有者来实现这一点。
然后,我必须设置带跨度的Gridlayoutmanager,但它还包括前两个文本,我最终在该网格中也放置了这两个文本视图,这是不需要的。
RecyclerView
?这是不好的做法。也许你需要的是不同的东西。如果你能说明你需要什么,这里的人们可能会指引你正确的方向。 - Abbas