1

リストビューからのデータがあり、それをデータベースに保存したいのですが、これが私のコードです。

listResep = (ListView) findViewById(R.id.listResep);
int leng = listResep.getCount();
for(int i = 0; i < leng; i++) {
    resep = listResep.getItemAtPosition(i).toString();
    new inputResep().execute();
}

およびinputResepの場合。

class inputResep extends AsyncTask<String, String, String> {

    /**
     * Before starting background thread Show Progress Dialog
     * */
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(InputRM.this);
        pDialog.setMessage("save Resep..");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(true);
        pDialog.show();
    }
    /**
     * Creating product
     * */
    protected String doInBackground(String... args) {
        // Building Parameters
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("rm", rm));
        params.add(new BasicNameValuePair("noregis", noregis));
        params.add(new BasicNameValuePair("tanggal", tglinput));
        params.add(new BasicNameValuePair("pukul", pukul));
        params.add(new BasicNameValuePair("ruper", ruper));
        params.add(new BasicNameValuePair("kelas", kelas));
        params.add(new BasicNameValuePair("profesi", profesi));
        params.add(new BasicNameValuePair("kajian", resep));
        params.add(new BasicNameValuePair("id_user", id_user));
        params.add(new BasicNameValuePair("tglsave", tglsave));
        // getting JSON Object
        // Note that create product url accepts POST method
        json = jsonParser.makeHttpRequest(URL_INPUT_RESEP,"POST", params);

        // check log cat for response
        Log.d("Create Response", json.toString());
        // check for success tag
        try {
            int success = json.getInt(TAG_SUCCESS);
            Log.d("stat", success+"");
            if (success > 0) {
                // successfully created product

            } else {
                // failed to create product
            }
        } catch (JSONException e) {
            e.printStackTrace();
            Log.d("test", "JSONException"+e.getMessage());
        }
        return null;
    }
    /**
     * After completing background task Dismiss the progress dialog
     * **/
    protected void onPostExecute(String file_url) {
        pDialog.dismiss();
    }
}

しかし、resepを入力しようとするたびに、リストビューのデータと同じくらいリストビューの最後のデータしか保存されません.ex =listview: data1, data2, data3; save: data3, data3, data3;

4

3 に答える 3

2

@Exeptionalの回答を見た後、これが私が対処する方法です。

    int leng = listResep.getCount();
    Log.d("jml resep", ""+leng);
    for(int i = 0; i < leng; i++) {
        resep = listResep.getItemAtPosition(i).toString();

        Log.d("save resep"+i, resep);
//      new inputResep().execute();
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("rm", rm));
        params.add(new BasicNameValuePair("noregis", noregis));
        params.add(new BasicNameValuePair("tanggal", tglinput));
        params.add(new BasicNameValuePair("pukul", pukul));
        params.add(new BasicNameValuePair("ruper", ruper));
        params.add(new BasicNameValuePair("kelas", kelas));
        params.add(new BasicNameValuePair("profesi", profesi));
        params.add(new BasicNameValuePair("kajian", resep));
        params.add(new BasicNameValuePair("id_user", id_user));
        params.add(new BasicNameValuePair("tglsave", tglsave));
        // getting JSON Object
        // Note that create product url accepts POST method
        json = jsonParser.makeHttpRequest(URL_INPUT_RESEP,"POST", params);

        // check log cat for response
        Log.d("Create Response", json.toString());
        // check for success tag
        try {
            int success = json.getInt(TAG_SUCCESS);
            Log.d("stat", success+"");
            if (success > 0) {
                // successfully created product

            } else {
                // failed to create product

            }

        } catch (JSONException e) {
            e.printStackTrace();
            Log.d("test", "JSONException"+e.getMessage());
        }
    }

編集:

エミュレータで試してみると問題なく動作し、タブレットにインストールしようとしましたが、最初は問題なく動作しましたが、データを保存しようとするとうまくいかなかったので、変更してasyncTaskにループを入れました:

class inputResep extends AsyncTask<String, String, String> {
    /**
     * Creating product
     * */
    protected String doInBackground(String... args) {
        int leng = listResep.getCount();
        Log.d("jml resep", ""+leng);
        for(int i = 0; i < leng; i++) {
            resep = listResep.getItemAtPosition(i).toString();
            // Building Parameters
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("rm", rm));
            params.add(new BasicNameValuePair("noregis", noregis));
            params.add(new BasicNameValuePair("tanggal", tglinput));
            params.add(new BasicNameValuePair("pukul", pukul));
            params.add(new BasicNameValuePair("ruper", ruper));
            params.add(new BasicNameValuePair("kelas", kelas));
            params.add(new BasicNameValuePair("profesi", profesi));
            params.add(new BasicNameValuePair("kajian", resep));
            params.add(new BasicNameValuePair("id_user", id_user));
            params.add(new BasicNameValuePair("tglsave", tglsave));

            // getting JSON Object
            // Note that create product url accepts POST method
            json = jsonParser.makeHttpRequest(URL_INPUT_RESEP,"POST", params);

            Log.d("testinput", "4");
            // check log cat for response
            Log.d("Create Response", json.toString());
            // check for success tag
            try {
                int success = json.getInt(TAG_SUCCESS);
                Log.d("stat", success+"");
                if (success > 0) {
                    // successfully created product
                    Log.d("test", "berhasil simpan resep");

                } else {
                    // failed to create product

                    Log.d("test", "failed to create product ");
                }

                Log.d("test", "in try");

            } catch (JSONException e) {
                e.printStackTrace();
                Log.d("test", "JSONException"+e.getMessage());
            }
        }
        return null;
    }
}
于 2013-08-22T05:23:59.460 に答える
2

すべてをFORループに入れて、リストビューの合計ビューのサイズを取得すると、ループごとにデータがデータベースにアップロードされます!!

于 2013-08-22T04:41:47.467 に答える