Android - Problema al Mostrar Json en List View

 
Vista:
sin imagen de perfil

Problema al Mostrar Json en List View

Publicado por Bruno (2 intervenciones) el 23/09/2016 17:05:19
Hola, buenos dias. les comento que soy nuevo en este sitio, estoy comenzando a programar en Android y utilizo Android Studio.. en este momento estoy intentando realizar lo siguiente:

Obtener en mi App, en un List View el contenido de una tabla creada en MYSQL, utilizando un Web Service (JSON). el problema que estoy teniendo es que cuando compilo y abro el .apk en mi dispositivo el mismo se ejecuta correctamente, me muestra un Activity y al presiona en el boton "Mostrar" me lanza otro activity y me muestra el List View pero su contenido en vez de ser dni, nombre, apellido. me muestra com.hospital.stinfgchu.hospitalbicentenario.Pacientes@3dfabdeb

Sinceramente, soy muy nuevo y no e podido darle solución a mi problema.

Adjunto el código y espero puedan echarme una mano!. desde ya muchas gracias.

main.java
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
package com.hospital.stinfgchu.hospitalbicentenario;
 
import android.app.Activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
 
 
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
 
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
 
 
//Clase Principal
public class main extends AppCompatActivity {
    //Atributos
    private EditText dni;
    private EditText nombre;
    private EditText apellido;
    private Button load;
    private Button  mostrardatos;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        setContentView(R.layout.activity_main);
 
        //Asignacion de Identificadores (Casting)
        dni = (EditText) findViewById(R.id.dni);
        nombre = (EditText) findViewById(R.id.nombre);
        apellido = (EditText) findViewById(R.id.apellido);
        mostrardatos = (Button) findViewById(R.id.btn_mostrar);
 
 
        //Paso de Variables Intent
        mostrardatos.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(main.this, muestradatos.class);
                intent.putExtra("dni_date", dni.getText() + ""); //modificar
                startActivity(intent);
            }
        });
 
        load = (Button) findViewById(R.id.load);
        load.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //TODO Auto-Generated Method Stub
                if (!dni.getText().toString().trim().equalsIgnoreCase("") && !nombre.getText().toString().trim().equalsIgnoreCase("") && !apellido.getText().toString().trim().equalsIgnoreCase(""))
                    new Insertar(main.this).execute();
                else
                    Toast.makeText(main.this, "Debe completar todos los campos.", Toast.LENGTH_LONG).show();
            }
        });
    }
 
    //Conexion para Insertar
    private boolean insert(){
        HttpClient httpclient;
        List<NameValuePair>nameValuePairs;
        HttpPost httppost;
        httpclient=new DefaultHttpClient();
        httppost=new HttpPost("http://192.168.20.101:8099/android/conexion.php");
 
        //Añadir Nuestros Datos
        nameValuePairs = new ArrayList<NameValuePair>(3);
        nameValuePairs.add(new BasicNameValuePair("dni",dni.getText().toString().trim()));
        nameValuePairs.add(new BasicNameValuePair("nombre",nombre.getText().toString().trim()));
        nameValuePairs.add(new BasicNameValuePair("apellido",apellido.getText().toString().trim()));
 
        try {
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            httpclient.execute(httppost);
            return true;
        } catch (UnsupportedEncodingException e){
            //TODO Auto-Generated Catch Block
            e.printStackTrace();
        } catch (ClientProtocolException e){
            //TODO Auto-Generated Catch Block
            e.printStackTrace();
        } catch (IOException e){
            //TODO Auto-Generated Catch Block
            e.printStackTrace();
        }
        return false;
    }
 
    class Insertar extends AsyncTask<String,String,String>{
        private Activity context;
 
        Insertar(Activity context){
            this.context=context;
        }
 
        @Override
        protected String doInBackground(String... params) {
            //TODO Auto-Generated Method Stub
            if (insert())
                context.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        //TODO Auto-Generated Method Stub
                        Toast.makeText(context,"Paciente Ingresado Con Exito", Toast.LENGTH_LONG).show();
                        dni.setText("");
                        nombre.setText("");
                        apellido.setText("");
                    }
                });
            else
                context.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        //TODO Auto-Generated Method Stub
                        Toast.makeText(context,"Error al insertarar Paciente", Toast.LENGTH_LONG).show();
                    }
                });
            return null;
        }
    }
}


muestradatos.java
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
package com.hospital.stinfgchu.hospitalbicentenario;
 
 
import android.app.Activity;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
 
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
 
 
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
 
 
 public class muestradatos extends Activity {
    ListView listaJson;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_muestradatos);
 
        listaJson =(ListView)findViewById(R.id.listJson);
 
        Tarea1 tarea1 = new Tarea1();
        tarea1.cargarContenido(getApplicationContext());
        tarea1.onPreExecute();
        tarea1.execute(listaJson);
    }
 
    static class Tarea1 extends AsyncTask<ListView, Void, ArrayAdapter<Pacientes>>{
        Context contexto;
        ListView list;
        InputStream is;
        ArrayList<Pacientes> listaPacientes = new ArrayList<Pacientes>();
 
        public void cargarContenido(Context contexto){
            this.contexto = contexto;
        }
 
        @Override
        protected void onPreExecute(){
            //Todo Auto-Generated metod stub
        }
 
 
        @Override
        protected ArrayAdapter<Pacientes> doInBackground(ListView... params) {
            list = params[0];
            String resultado = "falla";
            Pacientes pac;
 
 
            //Conexion HTTP
            DefaultHttpClient cliente = new DefaultHttpClient();
            HttpGet peticionGet = new HttpGet("http://192.168.20.101:8099/android/selectall.php");
 
            try {
                HttpResponse response = cliente.execute(peticionGet);
                HttpEntity contenido = response.getEntity();
                is = contenido.getContent();
 
            } catch (ClientProtocolException e) {
                //Todo Auto-Generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                //Todo Auto-Generated metod stub
                e.printStackTrace();
            }
 
            BufferedReader buferlector = new BufferedReader(new InputStreamReader(is));
            StringBuilder sb = new StringBuilder();
            String linea = null;
 
            try {
                while ((linea = buferlector.readLine()) != null) {
                    sb.append(linea);
                }
            } catch (IOException e) {
                //Todo Auto-Generated metod stub
                e.printStackTrace();
            }
            try {
                is.close();
            } catch (IOException e) {
                //Todo Auto-Generated metod stub
                e.printStackTrace();
            }
            resultado = sb.toString();
 
            try {
                JSONArray arrayJson = new JSONArray(resultado);
                for (int i = 0; i < arrayJson.length(); i++) {
                    JSONObject objetoJson = arrayJson.getJSONObject(i);
                    pac = new Pacientes(objetoJson.getString("dni"), objetoJson.getString("nombre"), objetoJson.getString("apellido"));
                    listaPacientes.add(pac);
                }
            } catch (JSONException e) {
                //Todo Auto-Generated catch block
                e.printStackTrace();
            }
            ArrayAdapter<Pacientes> adaptador = new ArrayAdapter<Pacientes>(contexto, android.R.layout.simple_list_item_1, (List<Pacientes>) listaPacientes);
 
            return adaptador;
        }
 
        @Override
        protected void onPostExecute(ArrayAdapter<Pacientes> result){
            list.setAdapter(result);
        }
 
        @Override
        protected void onProgressUpdate(Void... params){
 
        }
    }
 
    //Cerrar Activity, regresa al primero.
    public void volver (View view) {
        finish();
    }
}

Pacientes.java

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
package com.hospital.stinfgchu.hospitalbicentenario;
 
public class Pacientes {
    private String dni;
    private String nombre;
    private String apellido;
 
    public Pacientes(String dni, String nombre, String apellido) {
        super();
        this.dni = dni;
        this.nombre = nombre;
        this.apellido = apellido;
    }
 
 
 
    public String getDni(){
        return dni;
    }
    public void setDni(String dni){
        this.dni = dni;
    }
 
    public String getNombre(){
        return nombre;
    }
    public void setNombre(String nombre){
        this.nombre = nombre;
    }
 
    public String getApellido(){
        return apellido;
    }
    public void setApellido(String apellido){
        this.apellido = apellido;
    }
}

Activity_muestra_datos.xml

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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.hospital.stinfgchu.hospitalbicentenario.muestradatos"
    android:weightSum="1">
 
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Datos Paciente"
        android:id="@+id/tvdate"
        android:layout_gravity="center_horizontal"
        android:textAlignment="center"
        android:textSize="27dp"
        android:textColor="#467fe2" />
 
    <ListView
        android:layout_width="match_parent"
        android:layout_height="246dp"
        android:id="@+id/listJson"
        android:layout_gravity="center_horizontal"
        android:choiceMode="singleChoice"
        android:layout_weight="0.78" />
 
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Volver"
        android:id="@+id/volver"
        android:layout_gravity="center_horizontal"
        android:onClick="volver" />
</LinearLayout>


conexion.xml

1
2
3
4
5
6
7
8
9
10
<?php
	$link=mysql_connect("localhost:8099","root","root",FALSE);
	mysql_select_db("android",$link) or die ('Error al conectar db');
 
	$dni=$_REQUEST['dni'];
	$nombre=$_REQUEST['nombre'];
	$apellido=$_REQUEST['apellido'];
 
	$consulta=mysql_query("insert into paciente(dni,nombre,apellido) values ('$dni','$nombre','$apellido')",$link);
?>


selectall.php
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
<?php
	$link=mysql_connect("localhost","root","root",FALSE);
	mysql_select_db("android",$link) or die ('Error al conectar db');
 
	$sql = "SELECT * FROM paciente";
 
	if(!$result = mysql_query($sql, $link)) die();
 
	$paciente = array(); //creamos un array
 
	while($row = mysql_fetch_array($result))
	{
	/*	$dni=$row['dni'];
		$nombre=$row['nombre'];
		$apellido=$row['apellido'];
		
		echo $row['dni']."<br>".$row['nombre']."<br>".$row['apellido']."<br>";*/
		$paciente []= array('dni'=>$row['dni'],'nombre'=>$row['nombre'],'apellido'=>$row['apellido']);
	}
 
	//desconectamos la base de datos
	$close = mysql_close($link)
	or die("Ha sucedido un error inexperado en la desconexion de la base de datos");
 
 
	//Creamos el JSON
$json_string = json_encode($paciente);
echo $json_string;
?>
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