我有一个从 URL 获取的图像的 GridView ,当 Activity 开始时我加载了 24 张图像。现在当用户在底部滚动时,我需要加载例如。还有 8 张图像,但是当我这样做时,我的 Activity 正在重新加载并且没有加载新图像。有人可以帮我解决这个问题吗。
这是我的代码:
//load more images onclick
loadmore.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
start += 8;
Log.v("--", start + " start");
new getImagesTask().execute();
adapter.notifyDataSetChanged();
Log.v("--", images.size() + " G O L E M I N A !");
}
});
//and my asyncTask
public class getImagesTask extends AsyncTask<Void, Void, Void> {
JSONObject json;
ProgressDialog dialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog = ProgressDialog.show(Main.this, "",
getString(R.string.loading_));
}
@Override
protected Void doInBackground(Void... params) {
URL url;
if (start < totalItemCount) {
//
// while (start < totalItemCount) {
try {
Log.v("--", start + "");
url = new URL(jsonURL + initialKeyWord + parameters + start);
URLConnection connection = url.openConnection();
String line;
StringBuilder builder = new StringBuilder();
BufferedReader reader = new BufferedReader(
new InputStreamReader(connection.getInputStream()));
while ((line = reader.readLine()) != null) {
builder.append(line);
}
json = new JSONObject(builder.toString());
JSONObject responseObject = json
.getJSONObject("responseData");
JSONArray resultArray = responseObject
.getJSONArray("results");
int golemina = resultArray.length();
for (int k = 0; k < golemina; k++) {
images.add(getImageList(resultArray).get(k));
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
start += 8;
this.doInBackground();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
((GridView) list).setAdapter(adapter);
if (dialog.isShowing()) {
dialog.dismiss();
}
adapter.notifyDataSetChanged();
Log.v("--", images.size() + " g o l e m i n a");
}
}
最佳答案
((GridView) list).setAdapter(adapter);
应该出现在你 Activity 的 onCreate()
而不是 onPostExecute()
.
刷新 ListView 中的数据。在 AsyncTask
的 onPostExecute()
中调用 adapter.notifyDataSetChanged()
之前,您必须修改 images Arraylist
/p>
关于android - 使用 AsyncTask 加载更多 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17917601/