How to put onclicklistener to a listview filled with json

0

I'm trying to make a listview filled with json. So far, it worked for me, but when I try to assign the onclicklistener to the list, it marks me an error, any suggestions?

package com.tappmovil.volleytest;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import com.loopj.android.http.*;
import org.json.JSONArray;
import java.util.ArrayList;

import cz.msebera.android.httpclient.Header;

public class lista extends AppCompatActivity  {
    ListView listado;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lista);
        listado = (ListView) findViewById(R.id.listview);

        ObtDatos();
    }

    public void ObtDatos(){
        AsyncHttpClient client = new AsyncHttpClient();
        String url="http://grupocoder.com/data2.json";

        RequestParams parametros = new RequestParams();
        parametros.put("Edad",18);

        client.post(url, parametros, new AsyncHttpResponseHandler() {
            @Override
            public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
                if(statusCode==200){
                    CargaLista(ObtDatosJSON(new String(responseBody)));
                    //llamar a la funcion
                }
            }

            @Override
            public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {

            }
        });
    }

    public void CargaLista(ArrayList<String> datos){
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,datos);
        listado.setAdapter(adapter);
    }


    public ArrayList<String> ObtDatosJSON(String response) {
        ArrayList<String> listado = new ArrayList<String>();
        try {
            JSONArray jsonArray = new JSONArray(response);
            String texto;
            for (int i=0;i<jsonArray.length();i++){
                texto=jsonArray.getJSONObject(i).getString("Nombre") + " "; //+
                    //    jsonArray.getJSONObject(i).getString("Direccion") + " " +
                     //   jsonArray.getJSONObject(i).getString("Telefono") + " " ;
                listado.add(texto);
            }

        } catch(Exception e) {
            e.printStackTrace();
        }
        return listado;
    }
}
    
asked by Monster 06.08.2017 в 08:16
source

1 answer

1

It is done after filling the listview with the adapter, so in your case in onCreate you call the click on an item of listview .

ObtDatos();

listado.OnItemClickListener(...)

You can see more details here .

An example:

listado.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                        intent = new Intent(view.getContext(),SiguienteActividad.class);
                        intent.putExtra("datos",datos.get(i));

                        startActivity(intent);
                    }
                });
    
answered by 06.08.2017 в 09:50