【问题标题】:Display recylerview Data with Array of CustomLists使用自定义列表数组显示 recyclerview 数据
【发布时间】:2018-07-02 21:50:24
【问题描述】:

我有点卡在下面。

我正在使用 Retrofit 和 RxJava2,我设法通过使用 Observable.zipreturn Arrays.asList(list1, list2, list3); 获得了 List<List<CustomModel>>,它现在看起来如下所示:

[list1,list2,list3]

我可以使用以下方法访问列表并打印每个单独的项目:

                for (List<CustomModel> b : customModel) {
                    for (customModel c : b) {
                        Print INDIVIDUAL ITEMS
                        Log.d("id: ", c.getId());
                        Log.d("name: ", c.getName());
                        Log.d("symbol: ", c.getSymbol());
                        Log.d("rank: ", c.getRank());
                    }

但我无法使用以下方法将数据发送到我的自定义适配器:

   recyclerAdapter = new RecyclerAdapter(getApplicationContext(), b);
                    recyclerView.setAdapter(recyclerAdapter);
                    recyclerAdapter.notifyDataSetChanged();
                    swipeRefreshLayout.setRefreshing(false);

只给我数组上的最新列表,而不是过去的列表,因为在将数据传递到我的 recyclerview 时它们会被覆盖。

在 recyclerView 中显示所有 3 个列表的最佳方式是什么?

【问题讨论】:

    标签: java android android-studio android-recyclerview retrofit2


    【解决方案1】:

    假设 CustomModel 是您的模型类。 RecyclerAdapter 是您的类,它扩展了 RecyclerView.Adapter&lt;RecyclerAdapter.MyViewHolder&gt;,其中RecyclerAdapter.MyViewHolder 是您在 package RecyclerAdapter 中的类,它扩展了 RecyclerView.ViewHolder。

    private List<CustomModel> modelList = new ArrayList<>();
    private RecyclerView recyclerView;
    private RecyclerAdapter mAdapter;
    
    
    recyclerView = (RecyclerView) findViewById(R.id.recycler_view); 
    mAdapter = new RecyclerAdapter(modelList);
    
    RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
    recyclerView.setLayoutManager(mLayoutManager);
    recyclerView.setItemAnimator(new DefaultItemAnimator());
    
    recyclerView.setAdapter(mAdapter);
    

    每当有新数据出现时,不要创建新适配器并分配给 recyclerview。只需添加到现有列表并通知适配器。将出现新项目。

    for (List<CustomModel> customModels : customModelLists) {
        modelList.addAll(customModels);
    }
    
    mAdapter.notifyDataSetChanged();
    

    我个人觉得这个链接很有帮助:https://www.androidhive.info/2016/01/android-working-with-recycler-view/

    【讨论】:

    • 非常感谢您的指导,我现在已经纠正了这个问题,我现在了解了 recyclerview 和列表的工作原理。我的问题与您描述的完全一样,我正在创建一个新适配器而不是将数据添加到列表中。我所要做的就是通知 recyclerView 添加数据。
    猜你喜欢
    • 2018-12-17
    • 1970-01-01
    • 2018-09-21
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 2017-08-27
    • 2018-05-03
    • 2017-04-15
    相关资源
    最近更新 更多