将数据从listview保存到数据库

时间:2013-08-22 04:30:39

标签: android listview

我有listview的数据,我想将它保存在我的数据库中,这是我的代码;

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();
    }
}

但每次我尝试输入重新设置时,它只会保存listview中的最后一个数据,与listview中的数据一样多,ex = listview: data1, data2, data3; save: data3, data3, data3;

3 个答案:

答案 0 :(得分:2)

将整个事物放入FOR LOOP,获取listview中总视图的大小,因此对于每个循环,数据将上传到数据库中!!

答案 1 :(得分: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;
    }
}

答案 2 :(得分:0)

尝试在post执行for for循环中使用这个

protected void onPostExecute(response response) {
    pDialog.dismiss();


 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());
    }
}