Android / Java: Cómo obtener el ArrayList <JSONObject> a partir de una actividad a otra?

ΩlostA:

Quiero conseguir un valor pasado de otra actividad, que funciona bien con el tipo múltiple como JSONArray, cuerdas, etc ... pero no pude encontrar la manera de recuperar un valor ArrayList.

Probé varias manera como éste sin éxito:

      ArrayList<JSONObject> poiArr;   
        JSONArray jsonPoints;  
        try {
            poiArr = new ArrayList<JSONObject>(bundle.getSparseParcelableArray("poiArr"));  
//here is the problem 
        } catch (Exception e) {
            e.printStackTrace();
        }

        try {
            jsonPoints = new JSONArray(bundle.getString("lesPoints"));
        } catch (JSONException e) {
            e.printStackTrace();
        }

Tengo este mensaje de error:

java.lang.NullPointerException: intento de invocar método de interfaz 'java.lang.Object [] java.util.Collection.toArray ()' en una referencia de objeto nulo

¿Algunas ideas?

SaadAAkash:

JSONObject no es parcelable, o incluso Serializable. Por lo que la única opción que te queda es utilizar JSONObject del toString()método y luego confiar en el uso putStringArrayListExtra()de la intención de pasarlo a la otra.

Por otra actividad, el uso getExtras()de la intención de recibir y convertir que a JSONObject pasando la cadena en su constructor y lazo para formar el ArrayList si es necesario.

Por ejemplo, la ArrayList de JSONObject es sendingArr:

List<String> sendingListOfStrings = new ArrayList<String>();
for(int i = 0; i < sendingArr.length(); i++) {
    sendingListOfStrings.add( sendingArr.getJSONObject(i).toString() );
}

Envío desde ActivityOne a ActivityTwo:

Intent intent = new Intent(ActivityOne.this, ActivityTwo.class);
intent.putStringArrayListExtra("sending_list", sendingListOfStrings);
startActivity(intent);

Entonces capturarlo = en la otra:

ArrayList<JSONObject> receivingArr;
Bundle receivingListOfStrings = getIntent().getExtras();
ArrayList<String> list = receivingListOfStrings.getStringArrayList("sending_list");
for (int i = 0; i < receivingListOfStrings.length(); i++) {
    receivingArr.add( new JSONObject( receivingListOfStrings.get(i) ) );
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=313348&siteId=1
Recomendado
Clasificación