user5296685
user5296685

Reputation: 17

How to get a JSON object data from AsyncTask<Void, Void, JSONObject>?

I have an MainActivity class. one Login class which extends AsyncTask. after execute Login class, it will return JSONObject to MainActivity like:

AsyncTask<Void, Void, JSONObject> getData = (new Login()).execute();

Now how can I separate data from getData?

my returned JOSNObject will looks like:

{"FirstName":"A","LastName":"B","ID":"09","Cell":"0123456789","Email":"[email protected]"}

or do I need to handle these in different way?

Upvotes: 0

Views: 1274

Answers (2)

Vikas Mane
Vikas Mane

Reputation: 789

To pass data from AsyncTask to your Activity you can create a call back method.

  1. First create a Interface

    public interface OnTaskCompleteListener{
      public void onTaskCompleted(JsonObject jsonobj);  
    }
    
  2. Then implement and override its method in Activity

    public class MainActivity extends Activity implements OnTaskCompleteListener{
      @Override
      public void OnTaskCompleted(JsonObject jsonobj)
      {
    
      }
    
  3. And lastly pass data from your AsyncTask

    public class Login extends AsyncTask<Void, Void, JSONObject>{ 
    private OnTaskCompleteListener listener;
    
    public Login(OnTaskCompleteListener listener){
        this.listener=listener;
    }
    protected void onPostExecute(JsonObject obj){
        listener.onTaskCompleted(obj);
    }
    }
    

    I hope this is what you wanted. You can refer this question in case of doubts:

    android asynctask sending callbacks to ui

Upvotes: 0

Aspicas
Aspicas

Reputation: 4497

You can try this on doInBackground:

JSONObject json = new JSONObject(StringResponse);

String FirstName = json.getString("FirstName");
String LastName = json.getString("LastName");
String ID = json.getString("ID");
String Cell= json.getString("Cell");
String Email= json.getString("Email");

Now you have data separate on differents strings.

Upvotes: 1

Related Questions