1

URL から取得した画像のグリッドビューがあり、アクティビティの開始時に 24 枚の画像を読み込みます。ユーザーが一番下をスクロールすると、たとえばロードする必要があります。さらに 8 枚の画像がありますが、これを行うとアクティビティがリロードされ、新しい画像は読み込まれません。誰かがこの問題を解決するのを手伝ってくれませんか。

これが私のコードです:

//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");

        }
    }
4

1 に答える 1