2013-08-22 66 views
0

我有来自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(); 
} 

and for 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时间,但挽救的ListView尽可能在列表视图,前数据最后的数据= listview: data1, data2, data3; save: data3, data3, data3;

+3

我想你应该把你的asynctask移出for循环。 – Raghunandan

+0

为什么在循环内多次执行异步任务? –

+0

非常错误的使用'AsyncTask',你应该做的是利用'AsyncTask'的Param部分。生成Params并将它们传入你的'AsyncTask'并在'doInBackground()'中访问它们,然后作为一个整体上传你的数据,或者可能在chuknks中。顺便说一句,使用这种技术你需要执行一次'AsyncTask'。 –

回答

1

把整个事情在for循环中,获得的大小在listview等全部视图中,每个循环的数据将被上传到数据库中!

+1

这不是答案,而是一个评论! –

+0

如果问这个问题的人说它没有帮助,那么我甚至会删除 – Exceptional

+0

@Exeptional它的工作原理!谢谢 – Darjeeling

0

尽量期运用在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()); 
    } 
} 
2

看着@Exeptional答案后,我这是怎么对付它这一个在postexecute;

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