2012-04-24 13 views
13

Deseo crear listview. Obtuve el valor del JSON. Aquí obtuve el valor de json en listview, pero no puedo obtener el método onItemclickListener. ¿Por qué sucede esto? No lo sé. Por favor, ayúdenme en la codificación como se muestra a continuación.Cómo crear listview onItemclicklistener

Logcat no muestra nada.

Gracias.

<ListView 
    android:id="@+id/contests_listView" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_below="@+id/header" 
    android:focusable="true"> 
</ListView> 

Activity.java

public class Activites_Activity extends CheerfoolznativeActivity { 

private ListView contests_listView; 
private ProgressBar pgb; 
ActivitiesBean bean; 
ArrayList<Object> listActivities; 
ListAdapter adapter; 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_listview); 
    setHeader("Activites"); 


    contests_listView = (ListView) findViewById(R.id.contests_listView); 
    pgb = (ProgressBar) findViewById(R.id.contests_progressBar); 
    listActivities = new ArrayList<Object>(); 

    new FetchActivitesTask().execute(); 

} 

public class FetchActivitesTask extends AsyncTask<Void, Void, Void> { 

    int i =0; 
    @Override 
    protected void onPreExecute() { 
     // TODO Auto-generated method stub 
     super.onPreExecute(); 
     pgb.setVisibility(View.VISIBLE); 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     // TODO Auto-generated method stub 

     String url = "my json URL"; 
     String strResponse = util.makeWebCall(url); 

     try { 

      //my json logic here   
     } 
     catch (JSONException e) { 

      e.printStackTrace(); 

     } 

     return null; 
    } 

    @Override 
    public void onPostExecute(Void result) { 
     // TODO Auto-generated method stub 
     super.onPostExecute(result); 

     pgb.setVisibility(View.GONE); 
     displayAdapter(); 
    } 
} 

public void displayAdapter() 
{ 
    adapter = new ListAdapter(this, listActivities); 
    contests_listView.setAdapter(adapter); 
    contests_listView.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, 
       int position, long id) { 

      // Toast.makeText(getApplicationContext(),"Title => "+items.get(position), Toast.LENGTH_SHORT).show(); 

      System.out.println("=========== Click"); 
      bean = (ActivitiesBean) adapter.getItem(position); 

      Intent in1 = new Intent(Activites_Activity.this, Activity_display.class); 
      in1.putExtra("ActivityObject", bean); 
      startActivity(in1); 
     } 
    }); 


} 
} 

que también utilizan esta

contests_listView.setItemsCanFocus(true); 
+0

¿Muestra los elementos de la ListView? e imprime '=========== Haga clic' en los registros cuando hace clic en un elemento? – waqaslam

+0

¿has probado setOnItemSelectedListener? Creo que podría llamar por defecto a ese oyente? – MikeIsrael

+0

@Waqas, sí Obtuve el valor en la vista de lista, pero no muestro clic en los registros, tampoco muestro brindis. –

Respuesta

21

Prueba esto:

contests_listView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view,int position, long id) { 
     String item = (String) contests_listView.getItemAtPosition(position); 
     Toast.makeText(this,"You selected : " + item,Toast.LENGTH_SHORT).show();     
    } 
}); 
+0

Gracias, pero no funciona, por favor avíseme si hay otra solución para este problema. –

+0

¿Pero qué error estás recibiendo? Si logcat no da salida, intente restablecer el ADB a través de DDMS. – GAMA

+1

obtengo 'contests_listView' debe declararse como final? – Dan

0

Prueba este código:

protected void onListItemClick(ListView l, View v, int position, long id) { 

super.onListItemClick(l, v, position, id); 

Toast.makeText(this, "message", Toast.LENGTH_LONG).show(); 
} 
+0

Finalmente obtengo la solución. Por error, llevo el ScrollView a mi lista, luego de eliminarlo, funciona. –

0

Usar este:

contests_listView.setOnItemClickListener(new AdapaterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, 
       int position, long id) { 

      Intent in1 = new Intent(Activites_Activity.this, Activity_display.class); 

      startActivity(in1); 
     } 
    }); 
Cuestiones relacionadas