android listview onclick android-arrayadapter onitemclicklistener

android - OnItemClickListener usando ArrayAdapter para ListView



listview expandable android (4)

Quiero tener un OnItemClickListener para un ListView que creo usando un ArrayAdapter

Este es el código que uso para crearlo:

List<Comment> values = datasource.some_search("Wednesday","11"); ArrayAdapter<Comment> adapter = new ArrayAdapter<Comment>(this, android.R.layout.simple_list_item_1, values); setListAdapter(adapter);

¿Cómo implemento onItemClickListener?

¡Gracias!

EDITAR: Estoy usando en mi ArrayAdapter y ListView una cadena de objetos.

EDIT 2: Más código:

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); datasource = new CommentsDataSource(this); datasource.open(); //check if database is populated if NOT, populate with txtToDb(); if (!datasource.isPopulated()) { // Database is not populated so copy it from assets here try { txtToDb(); Log.i("Database", "Was not Populated"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); Log.i("Database", "Was not populated: txtToDb(); failed"); } } else { Log.i("Database", "Populated"); } //wat to show on screen: List<Comment> values = datasource.search("Wednesday","11"); // Use the SimpleCursorAdapter to show the // elements in a ListView ArrayAdapter<Comment> adapter = new ArrayAdapter<Comment>(this, android.R.layout.simple_list_item_1, values); setListAdapter(adapter); }

EDIT 3: XML:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:id="@+id/group" android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:id="@+id/add" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Add New" android:onClick="onClick"/> <Button android:id="@+id/delete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Delete First" android:onClick="onClick"/> </LinearLayout> <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>


De acuerdo, después de la información de que su Actividad extiende ListActivity aquí hay una manera de implementar OnItemClickListener:

public class newListView extends ListView { public newListView(Context context) { super(context); } @Override public void setOnItemClickListener( android.widget.AdapterView.OnItemClickListener listener) { super.setOnItemClickListener(listener); //do something when item is clicked } }


Use OnItemClickListener

ListView lv = getListView(); lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapter, View v, int position, long arg3) { String value = (String)adapter.getItemAtPosition(position); // assuming string and if you want to get the value on click of list item // do what you intend to do on click of listview row } });

Cuando haces clic en una fila, un oyente es despedido. Entonces setOnClickListener en la vista de lista y usas la clase interna OnItemClickListener .

También anula onItemClick . El primer param es un adaptador. El segundo param es la vista. tercer param es la posición (índice de elementos de vista de lista).

Usando el puesto, obtienes el artículo.

Editar: a partir de sus comentarios supongo que necesita configurar el adaptador o listview

Asumiendo que su actividad se extiende ListActivtiy

setListAdapter(adapter);

O si tu clase de actividad se extiende Actividad

ListView lv = (ListView) findViewById(R.id.listview1); //initialize adapter lv.setAdapter(adapter);


puedes usar de esta manera ...

listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, final int position, long id) { String main = listView.getSelectedItem().toString(); } });


Estoy usando arrayadpter, usando este código falso puedo obtener artículos

String value = (String) adapter.getItemAtPosition (position);

listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String string=adapter.getItem(position); Log.d("**********", string); } });