【发布时间】:2016-11-30 07:22:21
【问题描述】:
所以我有这两个数组列表:
ArrayList<String> a = new ArrayList();
ArrayList<String> b = new ArrayList();
a.add("bear","lion","bird","goose","cat");
b.add("car","bike");
然后我将它们都添加到一个新的数组列表中:
ArrayList<ArrayList<String>> list = new ArrayList();
list.add(a);
list.add(b);
然后,我将此arraylist 设置为recyclerview 的自定义适配器。在这个适配器内部,我还将这两个数组列表(位于最后一个数组列表中)设置为一个 recyclerview,它是适配器的项目视图。所以它是另一个recyclerview的自定义适配器内的recyclerview。
但是,当我调试应用程序时,第一个包含 5 个项目的数组列表在回收站视图中仅显示 2 个。像第二个数组列表。然后,当我删除第二个数组列表并再次调试应用程序时,第一个数组列表将显示其真实值。
如果我在 recyclerview 显示错误值后调用 notifyDataSetChanged(),它将显示其真实值。所以,我认为是因为某些视图(如果它是 recyclerview、fragment 或其他东西,我不会)还没有正确加载。
我应该如何解决这个问题?谢谢。
编辑: 这是我的适配器代码:
public class MyAdapter extends RecyclerView.Adapter<AdapterNearMe.MyViewHolder> {
private Context context;
private List<List<String>> list;
public class MyViewHolder extends RecyclerView.ViewHolder {
public RecyclerView rView;
public MyViewHolder(View view) {
super(view);
rView = (RecyclerView) view.findViewById(R.id.rview);
}
}
public MyAdapter (Context context, List<List<String>> list) {
this.context= context;
this.list = list;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_near_me, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
final List<String> newList= list.get(position);
holder.rView.setAdapter(new AdapterRView(context,newList));
holder.rView.setLayoutManager(new GridLayoutManager(context,3));
}
@Override
public int getItemCount() {
return list.size();
}
}
【问题讨论】:
-
你应该发布你的适配器代码
-
好的,已经发布了。
-
我认为@Raghunandan 的意思是发布整个适配器代码:) 至少实现了方法。
标签: android arraylist android-recyclerview adapter