在我的应用程序中,我想将服务器中的一些列表添加到我的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
我怎么办?
答案 0 :(得分:2)
您可以使用 subList()
界面的 List
方法:
例如:
model.clear();
model.addAll(response.body().getRes().getCarts().subList(3, 9));
注意:请注意,如果服务器中的列表少于10个项目,而您仍然需要最后7个项目,那么您应该改为动态传递索引(上述解决方案对于该实例将崩溃) >
subList(int fromIndex,int toIndex)
返回指定位置之间此列表部分的视图
fromIndex
(包括)和toIndex
(排除)。 (如果fromIndex
和toIndex
相等,返回列表为空。)返回列表为 受此列表支持,因此返回列表中的非结构性更改 反映在此列表中,反之亦然。返回列表支持 此列表支持的所有可选列表操作。此方法消除了对显式范围运算( 数组通常存在的排序)。任何期望 通过传递subList视图,可以将list用作范围操作 而不是整个列表。例如,以下成语删除了 列表中元素的范围:
list.subList(from, to).clear();
可以为
indexOf
和lastIndexOf
构建相似的习语, 并且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();
}