Android - Como obtener Strings de JSONArray

   
Vista:

Como obtener Strings de JSONArray

Publicado por Luis (93 intervenciones) el 02/01/2018 12:33:17
Hola a todos y feliz año nuevo.
Haber si me pueden ayudar a sacar de un JSONArray los campos y mostrarlos en otra actividad cada campo en un edittext para poder editarlos.

Les explico, tras una consulta con volley a una base de datos muestro en un listview todos los campos de la tabla.
La tabla contiene id nombre apellidos
Pero tan solo muestro nombre y apellido.
1
lista.add(+pos++ + "º  " +ja.getString(i+1)+"   "+ja.getString(i+2));

La intención es al tocar un ítem del listview convertir cada campo del arraystring en String para poder llevarme esos strings a una nueva actividad y recibirlos allí y mostrar cada String en su correspondiente editText.

En este momento únicamente consigo llevarme a la otra actividad el
1
itemSeleccionado.toString
el cual muestra en un único editText todos los campos.

Quizá lo este planteando mal y tenga que llevarme el objeto arraystring al la nueva actividad y desmontarlo allí.

Les agradecería de su ayuda para poder solucionar este problema que tengo.

A continuación les dejo el código de la actividad principal la cual hace la consulta a la base de datos y muestra el resultado en un listview.
Muchas gracias por su tiempo y gracias por detenerse a leer este post.
Felices fiestas.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
public class MainActivity extends AppCompatActivity {
   private Context ctx;
   ListView llistaResultado;
 
   int position;
 
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
 
       ctx = MainActivity.this;
 
       getSupportActionBar().setDisplayShowHomeEnabled(true);
       getSupportActionBar().setIcon(R.mipmap.ic_launcher);
 
       llistaResultado = (ListView)findViewById(R.id.lavclasificaciongeneral);
 
       listaclasificacion();
   }
 
   private void listaclasificacion() {
 
       String consulta = "http://miservidor.net/usuarios" + "/listado.php";
       EnviarRecibirDatos(consulta);
   }
 
   public void EnviarRecibirDatos(String URL){
 
       RequestQueue queue = Volley.newRequestQueue(this);
       StringRequest stringRequest = new StringRequest(Request.Method.GET, URL, new Response.Listener<String>() {
           @Override
           public void onResponse(String response) {
 
               response = response.replace("][",",");
               if (response.length()>0){
                   try {
                       JSONArray ja = new JSONArray(response);
                       Log.i("sizejson",""+ja.length());
                       CargarListView(ja);
                   } catch (JSONException e) {
                       e.printStackTrace();
                   }
 
               }
 
           }
       }, new Response.ErrorListener(){
           @Override
           public void onErrorResponse(VolleyError error) {
               Toast.makeText(getApplicationContext(), "Error, revise su conexion de internet", Toast.LENGTH_SHORT).show();
 
           }
       });
 
       queue.add(stringRequest);
 
   }
   public void CargarListView(JSONArray ja){
       int pos = position+1;
 
       ArrayList<String> lista = new ArrayList<>();
 
       for(int i=0;i<ja.length();i+=3){
 
           try {
              lista.add(+pos++ + "º  " +ja.getString(i+1)+"   "+ja.getString(i+2));
 
           } catch (JSONException e) {
               e.printStackTrace();
           }
       }
       ArrayAdapter<String> adaptador = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, lista );
       llistaResultado.setAdapter(adaptador);
 
       llistaResultado.setOnItemClickListener(new AdapterView.OnItemClickListener() {
 
           @Override
           public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
 
               // Obtiene el valor de la casilla elegida
               String itemSeleccionado = adapterView.getItemAtPosition(i).toString();
 
               Intent e = new Intent (MainActivity.this, Editar_registros.class);
 
               e.putExtra("nombre", itemSeleccionado.toString());
 
               startActivity(e);
 
           }
 
       });
 
   }
}

Y esta es la forma que recojo los datos desde la otra actividad y los muestro en un editText solo recojo un string ya que no soy capaz de enviar los campos por separado es ese el problema que no se resolver

1
2
String nombre = getIntent().getStringExtra("nombre");
edittextnombre.setText(nombre);
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Como obtener Strings de JSONArray

Publicado por Luis (93 intervenciones) el 03/01/2018 00:28:42
Hola de nuevo.

He estado buscando informacion por la red y e encontrado esto que relata mi problema

La forma adecuada es usar las clases JSONArray y JSONObject :

Suponiendo que tu variable response contiene la respuesta:
1
[{"codigo":"10","nombre":"Ejemplo"}]


Obtenemos el valor del array y su primer objeto (indice 0):
1
JSONArray jsonarray = new JSONArray(response);
1
JSONObject objeto = jsonarray.getJSONObject(0);



a partir del JSONObject , puedes obtener los valores del objeto mediante su nombre:
1
String valorCodigo = objeto.getString("codigo"); //obtiene valor 10
1
String valorNombre = objeto.getString("nombre"); //obtiene valor Ejemplo

Pero no soy capaz de implementarlo en mi codigo.
Agradeceria alguna ayuda muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar