2014-04-12 1 views
0

Я хочу отправить более одной записи из SQLite данных на сервер, когда мое подключение к Интернету вернется, я запрограммировал broadcast receiver, который работает, когда мой интернет возвращается, но он отправляет только один данные на сервер, я хочу отправить все записи таблицы при возврате в Интернет, предложите мне, как передать аргументы в цикл async task в цикле, взять все данные в параметры.Я хочу отправить более одной записи sqlite на сервер

public class BroadcastCreateTask extends BroadcastReceiver { 
     DatabaseHandler db; 
     public ProgressDialog pDialog; 
     JSONParser jsonParser=new JSONParser(); 
     private static String url_insert_task= ""; 
     // JSON Node names 
     private static final String TAG_SUCCESS = "success"; 

     @Override 
     public void onReceive(Context context, Intent intent) { 

      db= new DatabaseHandler(context); 
      boolean status = NetworkUtil.isNetworkAvailable(context); 
      String s = String.valueOf(status); 
      if(s.equals("true")) 
      Toast.makeText(context, "Connected to internet", Toast.LENGTH_LONG).show(); 
      new createTask().execute(); 
      Toast.makeText(context, "data send to server", Toast.LENGTH_SHORT).show(); 

      if(s.equals("false")) 
       Toast.makeText(context, "Not Connected to internet", Toast.LENGTH_SHORT).show(); 

     } 

    class createTask extends AsyncTask<String, Void,String> 
     { 
     @Override 
     protected String doInBackground(String... arg0) { 

      List<Task> tasks = db.getAllContacts(); 
      for(Task t : tasks){ 
      String o = t.getOwner(); 
      String s = t.getSubject(); 
      String st = t.getStartDate(); 
      String dt = t.getDueDate(); 
      String c = t.getContacts(); 
      String sta = t.getStatus(); 
      String p = t.getPriority(); 
      String d = t.getDescription(); 

      ArrayList<NameValuePair> params = new ArrayList<NameValuePair>(); 
      params.add(new BasicNameValuePair("owner",o)); 
      params.add(new BasicNameValuePair("subject",s)); 
      params.add(new BasicNameValuePair("startdate",st)); 
      params.add(new BasicNameValuePair("duedate",dt)); 
      params.add(new BasicNameValuePair("contacts",c)); 
      params.add(new BasicNameValuePair("status",sta)); 
      params.add(new BasicNameValuePair("priority",p)); 
      params.add(new BasicNameValuePair("description",d)); 

      JSONObject json = jsonParser.makeHttpRequest(url_insert_task, "POST", params); 
      db.deleteContact(new Task(o,s)); 
      // check log cat for response 
      Log.d("Create Response", json.toString()); 

      try 
      { 
      int success = json.getInt(TAG_SUCCESS); 
       if(success==1) 
       { 
       pDialog.dismiss(); 
       } 
      } catch (JSONException e) 
      { 
      // TODO: handle exception 
      e.printStackTrace(); 
      } 
      return null; 
      } 
      return null; 
      } // end of background method 

      @Override 
     protected void onPostExecute(String result) { 
     // TODO Auto-generated method stub 
     super.onPostExecute(result); 
     } 
     } // end of async task 
     }` 
+0

Вы должны просто выполнить запрос и выполнить цикл над строками в 'Cursor', возвращаемом из запроса. Возможно, если вы продемонстрируете свою текущую реализацию, мы могли бы помочь вам лучше. – Karakuri

+0

Я написал для цикла в async-задаче, но в конечном итоге задача async будет вызываться только один раз, n как принимать параметры для async-задачи и задавать параметры, я не могу ее получить. –

+0

Трудно понять ваше описание. Пожалуйста, покажите код, который вы написали, чтобы помочь мне понять вашу проблему. – Karakuri

ответ

1

Вы имеете заявление return null перед закрывающей скобкой цикла for. Ваш цикл работает только один раз и возвращается, что объясняет, почему отправляется только одна запись.

+0

Так что мне делать? –

+0

Удалите эту линию. – Karakuri

+0

ОК, подождите, я делаю это, и снова забегаю, –

Смежные вопросы