Android: cómo agregar un método de clic de artículo a un ArrayAdapter

Tengo un ArrayAdapter simple. Quiero configurar un listener para cada clic de fila de mi lista de tal manera que se abra una nueva Actividad. ¿Como podría hacerlo? Mi código de ArrayAdapter –

public class CountryListAdapter extends ArrayAdapter<String> { private final Activity context; private final ArrayList<String> names; public CountryListAdapter(Activity context, ArrayList<String> names) { super(context, R.layout.rowlayout, names); this.context = context; this.names = names; } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = context.getLayoutInflater(); View rowView = inflater.inflate(R.layout.rowlayout, null, true); TextView textView = (TextView) rowView.findViewById(R.id.label); textView.setText(names.get(position)); return rowView; } 

Suponiendo que está utilizando una ListActivity implementando OnItemClickListener , podría usar este código:

 ArrayAdapter<Object> ad = new ArrayAdapter<Object>(this, android.R.layout.simple_list_item_checked, items); setListAdapter(ad); ListView list = getListView(); list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); //list.setItemChecked(0, true); list.setOnItemClickListener(this); 

EDIT: De lo contrario, si no se extiende ListActivity, tiene un listview en su diseño y reemplazar ListView list = getListView() con algo como ListView list = findViewById(R.id.listView) . Reemplazar list.setOnItemClickListener(this) por

 list.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { } }); 

Simplemente implemente AdapterView.OnItemClickListener.

 @Override public void onItemClick(AdapterView<?> adapterView, View view, int pos, long l) { Intent i = new Intent(this, ProductActivity.class); i.putExtra("item_id", manager.getItemIdAtIndex(pos)); startActivity(i); } 

A continuación, simplemente establezca la clase con ese método como onItemClickListener en su adaptador.

Una vez que haya configurado su adaptador usando:

 mListView.setAdapter(myCountryListAdapter); 

A continuación, puede configurar un oyente de clics para el listview:

 mListView.setOnParentClickListener(new OnClickListener() { public void onClick(View view,) { ///do what you want the click to do } }); 
  • Vista de lista de Android dentro de un fragmento
  • Array Adapter notifyDataSetChanged () no funcionará
  • Conjunto de datos grande con ArrayAdapter y ListView en Android
  • Android: Constructor es ambiguo cuando paso Null, pero no cuando paso una variable asignada a Null
  • Spinner no puede cargar una matriz de números enteros?
  • El constructor ArrayAdapter <cadena> no está definido
  • Custom ArrayAdapter en un ListFragment
  • Adaptador con hasStableIds utilizando GUID o Strings como Ids
  • Cómo llamar a notifyDataSetChanged () de AsyncTask onPostExecute () en otra clase
  • El método getView () de ArrayAdapter repite dos o tres elementos en la lista
  • Filtrado personalizado en Android con ArrayAdapter
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.