我有一个带适配器的listView。
我想从服务器获取项目,然后将图像加载到每个项目。
服务器可以返回数十个项目,所以我通过10页的页面向客户询问。
我不希望用户选择页面或" next \ back"
只需在需要时添加更多项目。
我原本想过使用本地收藏品并将其填入下十个项目。
我的指标位于Adapter :: getView,其中position == 8。
问题是从服务器响应中填充本地集合的函数是在适配器之外。
如何调用此方法然后刷新适配器或使其无效?
你会采用不同的方法吗?
因为我加载图像我需要压缩它们所以我不能使用和现成的无限列表存储在git上。
答案 0 :(得分:0)
每当您想要向listView添加更多项目时:
adapter.notifyDataSetChanged()
。 答案 1 :(得分:0)
功能就在哪里,你只需要几步就可以了。
1-在适配器中定义页码。
int pageNumber;
// getter and setter
2-在getView中定义一个方法:
if (position == list.size()-2 && list.size() < totalRecord) // this make 8 , 18 , ...
getMoreData();
总记录是您在服务器端的所有记录
然后在getMore函数中调用Parent方法:
如果在活动中:
((ActivityName)context).functionName();
如果在片段类中,一种方法是将Fragment类传递给适配器,然后调用:
fragment.functionName();
然后在函数on activity中只增加pageNumber
的值(adapter.setPageNumber(++ adapter.getPageNumber())并将数据添加到列表然后调用adapter.notifyDatasetChanged();
并且最后一步,因为它可能会getMoreData();
调用更多,一旦你可以添加一个布尔值来检查那个调用是否跟随:
if (position == list.size()-2 && list.size() < totalRecord && isCanLoad())
getMoreData()中的将其更改为false
,并在从activity / fragment类获取所有数据后再将其更改为true
。