Gulnaz Ghanchi
Gulnaz Ghanchi

Reputation: 485

I want to send more than one record of sqlite to server

I want to send more than one record of SQLite data to server when my internet connection is come back, i have programmed a broadcast receiver which works when my internet is come back, but it send only one data to server, i want to send all the records of table when internet come back, suggest me that how to pass arguments to async task in for loop, an take each data to params.

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

Upvotes: 0

Views: 603

Answers (1)

Karakuri
Karakuri

Reputation: 38605

You have the statement return null before the closing brace of the for loop. Your loop runs only once and returns, which explains why only one record is being sent.

Upvotes: 1

Related Questions