Разбор JSON для объектов Parcelable для отправки объекта Parcelable другому действию в Android - PullRequest
0 голосов
/ 06 марта 2019

Я хотел передать ответ JSON Data от POST Запрос выполнен по API.Я создал класс Sharing, который реализует класс Parcelable.Я хочу использовать класс parcelable для хранения нескольких объектов (информация о клиенте) JSON ответ в основном действии и отправлять их во второе действие для отображения только информации о клиенте. Вот мои соответствующие коды, Вот APIответ .. { "success": "true", "message": "Logged in successfuly", "user": { "id": 13, "userNo": "", "name": "Adam", "username": "Adam@gmail.com", "actualPassword": "12345", "email": "apollo@client.com", "secondaryEmail": null, "primaryPhone": 9876544345, "secondaryPhone": null, "clientId": { "clientId": 1, "name": "Charlie", "address": "India", "createdBy": null, "createdAt": "2018-10-25T11:25:19.000Z", "updatedAt": "2019-01-21T10:10:39.000Z", "is_active": 1, "clientCode": "APL", "startTime": "08:00:00.000000", "endTime": "07:59:59.000000", }, "gender": null, "dob": null, "emergencyMobile": null, "officeNo": null, "loggedInStatus": 0, } }

Вот моя основная деятельность ..

public class MainActivity extends AppCompatActivity {


public  static String myUrl="IP Address URL Link";
TextView tvIsConnected;
EditText etEmail;
EditText etPassword;
TextView tvResult;
Button btn_Send;
String name="";

TextView client_ID;
TextView client_Name;
@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    etEmail = findViewById(R.id.etEmail);
    etPassword = findViewById(R.id.etPassword);
    tvResult = (TextView) findViewById(R.id.tvResult);

    btn_Send =(Button)findViewById(R.id.btnSend);


    final HTTPAsyncTask process = new HTTPAsyncTask();
    btn_Send.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            process.execute();
        }
    });


}


@SuppressLint("ParcelCreator")
public  class HTTPAsyncTask extends AsyncTask<String, Void, String> implements Parcelable {
    JSONObject jsonObject = new JSONObject();
    Intent i = new Intent(MainActivity.this, DashboardActivity.class);

    @Override
    protected String doInBackground(String... urls) {

        StringBuffer output = new StringBuffer();
        try {
            try {

                URL url = new URL(myUrl);

                jsonObject.put("userName", etEmail.getText().toString());
                jsonObject.put("password", etPassword.getText().toString());



                HttpURLConnection conn = (HttpURLConnection) url.openConnection();

                conn.setReadTimeout(15000 );
                conn.setConnectTimeout(15000 );
                conn.setRequestMethod("POST");
                conn.setDoInput(true);
                conn.setDoOutput(true);
                conn.setRequestProperty("Content-Type", "application/json; charset=utf-8");



                OutputStream os = conn.getOutputStream();

                os.write(jsonObject.toString().getBytes());
                os.flush();
                BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));
                String temp;
                while ((temp = br.readLine()) != null) {
                    output.append(temp);
                }
                conn.disconnect();

            } catch (JSONException e) {
                e.printStackTrace();
                return "Error";
            }
        }
        catch (IOException e) {
            return "Error while retrieving screen";
        }
        catch (Exception e) {
            e.printStackTrace();
        }

        return output.toString();
}



    @Override
    public void onPostExecute(String result ) {



        i.putExtra("key",result);

        startActivity(i);



    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {

    }
}


}

Ниже приведен мой класс общего доступа, который реализует класс Parcelable ..

public class SharingClass implements Parcelable {

private int ClientId ;
private String ClientName;
private String ClientAddress;

public SharingClass(){
    super();
}

public SharingClass(Parcel parcel){
    this.ClientId = parcel.readInt();
    this.ClientName = parcel.readString();
    this.ClientAddress = parcel.readString();
}

public SharingClass(Parcelable sharedObject) {
}

@Override
public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeInt(ClientId);
    dest.writeString(ClientName);
    dest.writeString(ClientAddress);
}

public static final Creator<SharingClass> CREATOR = new Creator<SharingClass>() {
    @Override
    public SharingClass createFromParcel(Parcel parcel) {
        return new SharingClass(parcel);
    }

    @Override
    public SharingClass[] newArray(int i) {
        return new SharingClass[i];
    }
};

public void setClientId(int ClientId) {
    this.ClientId = ClientId;
}

public void setClientName(String ClientName) {
    this.ClientName = ClientName;
}

public void setClientAddress(String ClientAddress) {
    this.ClientAddress = ClientAddress;
}

public int getClientId() {
    return ClientId;
}

public String getClientName() {
    return ClientName;
}

public String getClientAddress() {
    return ClientAddress;
}


}

Пожалуйста, дайтерешение для доступа к данным JSON для отображения информации о клиенте во втором упражнении, а также для анализа, когда я новичок в Android

1 Ответ

0 голосов
/ 06 марта 2019

Поскольку ваши объекты реализуют Parcelable, достаточно просто поместить их в ваши Intent с помощью putExtra ():

Intent i = new Intent();
i.putExtra("name_of_extra", myParcelableObject);

Затем вы можете вытащить их обратно с помощью getParcelableExtra ():

Intent i = getIntent();
SharingClass sharingClass = (SharingClass) i.getParcelableExtra("name_of_extra");

и если вам нужно получить доступ к данным внутри POJO, вы можете получить их, используя методы получения, например, в вашем случае. Если вам нужен доступ к ClientId, вы можете сделать это по.

int clientId = sharingClass.getClientId();

Надеюсь, это поможет.

...