如何在Android中向recyclerView添加项目

时间:2018-09-23 07:30:26

标签: java android android-recyclerview

在我的应用程序中,我想将服务器中的一些列表添加到我的recyclerView中。
我的列表项大小为10,但我想最后添加7个项到此RecyclerView。我不想在此recyclerView中添加前三项

我在下面编写代码:

        Call<ListCartResponse> call = apIs.getListCardResponse(jwtToken);
        call.enqueue(new Callback<ListCartResponse>() {
            @Override
            public void onResponse(Call<ListCartResponse> call, Response<ListCartResponse> response) {
                if (response.body() != null) {

                                if (response.body().getRes().getCarts() != null) {
                                    if (response.body().getRes().getCarts().size() > 0) {
                                        model.clear();
                                        model.addAll(response.body().getRes().getCarts());
                                        adapter.notifyDataSetChanged();

            }

            @Override
            public void onFailure(Call<ListCartResponse> call, Throwable t) {
            }
        });

但是在我上面的代码中,将10个项目全部添加到recyclerView
我只想添加最后7项,然后删除3项第一项。

我的回收商现在查看项目:1 2 3 4 5 6 7 8 9 10 但是我想要:4 5 6 7 8 9 10

我怎么办?

3 个答案:

答案 0 :(得分:2)

您可以使用 subList() 界面的 List 方法:

例如:

model.clear();
model.addAll(response.body().getRes().getCarts().subList(3, 9));

注意:请注意,如果服务器中的列表少于10个项目,而您仍然需要最后7个项目,那么您应该改为动态传递索引(上述解决方案对于该实例将崩溃)

Reference

  

subList(int fromIndex,int toIndex)

     

返回指定位置之间此列表部分的视图   fromIndex(包括)和toIndex(排除)。 (如果fromIndex和   toIndex相等,返回列表为空。)返回列表为   受此列表支持,因此返回列表中的非结构性更改   反映在此列表中,反之亦然。返回列表支持   此列表支持的所有可选列表操作。

     

此方法消除了对显式范围运算(   数组通常存在的排序)。任何期望   通过传递subList视图,可以将list用作范围操作   而不是整个列表。例如,以下成语删除了   列表中元素的范围:

list.subList(from, to).clear();
     

可以为indexOflastIndexOf构建相似的习语,   并且 Collections 类中的所有算法都可以   应用于subList。

     

如果以下情况返回了此方法返回的列表的语义:   支持列表(即此列表)以任何方式在结构上进行了修改   除了通过返回的列表之外。 (结构修改是那些   会更改此列表的大小,或者以其他方式干扰此列表   进行中的迭代可能会产生不正确的结果的方式。)

     

参数:

     

fromIndex -子列表的低端端点(包括端点)

     

toIndex -子列表的高端端点(不包括)

     

返回:

     

此列表中指定范围的视图

答案 1 :(得分:1)

添加此内容:

   if (response.body().getRes().getCarts().size() > 0) 
    {
      model.clear();
      model.addAll(response.body().getRes().getCarts());
      model.remove(0);
      model.remove(0);
      model.remove(0);
      adapter.notifyDataSetChanged();        
                }

答案 2 :(得分:0)

我认为是因为响应部分的set /?在适配器类中未引用model。将此添加到您的model类中,在收到响应后使用它:

SupportListAdapter

收到结果后:

public void replaceModelList(List<Res> newModel){
     model.clear();
     model.addAll(newModel);
     notifyDataSetChanged();
}