我想动态加载ListView,例如,在滚动期间加载它们,所以它不会加载我拥有的所有100个帖子。我怎样才能做到这一点?
我在SO处查看了类似的解决方案,但由于我没有让它工作,我问了这个问题。
我的代码:
//orders is my is my ArrayList<WithMyOwnOrderClass> that handling orders
/* adapter is my inner private class in this piece of code, that trigging
the getView */
if(orders != null && orders.size() > 0){
for(int i=0;i<orders.size();i++){
adapter.add(orders.get(i));
}
adapter.notifyDataSetChanged();
progressDialog.dismiss();
}
我有相同的.java文件,可以从网上下载信息并循环显示100个项目,如下所示:
JSONObject jObject = new JSONObject(queryResult);
SONArray docsArray = jObject.getJSONArray("array");
for (int i = 0; i < 100; i++) {
try {
title = docsArray.getJSONObject(i).optString("title");
} catch (JSONException e) {}
}
然后正确添加新订单等等。 但是现在!(?)我想在加载第一个项目时这样做,它应该出现,滚动时它会逐渐加载。
希望能够实现这一点,并提前感谢您的帮助!
答案 0 :(得分:3)
我将假设您从单个Web服务调用中获取项目的JSON。
如果是这样,请在AsyncTask
中进行查询和JSON解析。对每个项目执行doInBackground()
调用publishProgress()
。在onProgressUpdate()
(add()
)上实施ArrayAdapter
来电ArrayList<>
,以便将该项目附加到ListView
。 Here is a sample project展示了这项技术。