Custom ListVIew y onclick

Aquí está mi código – todo. Hice lo que me dijiste pero todavía no puedo hacer clic en nada. Quiero decir que puedo hacer clic pero no pasa nada

package fixus.core; import java.util.ArrayList; import java.util.Iterator; import android.app.ListActivity; import android.content.Context; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.AdapterView.OnItemClickListener; import fixus.lib.News; import fixus.testing.DataInput; public class NewserActivity extends ListActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); DataInput di = new DataInput(); ArrayList news = di.getNews(); NewsArrayAdapter naa = new NewsArrayAdapter(NewserActivity.this, R.layout.row, news); setListAdapter(naa); ListView lv = getListView(); lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView parent, View view, int position, long id) { Log.i("testy", "I Clicked on Row " + position + " and it worked!"); } }); } @Override /** * When the user selects an item in the list, do an action * @param ListView l * @param View v * @param int position * @param long id */ protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); final int index = position; //You can add whatever you want to happen when you click here Log.i("testy", "I Clicked on Row " + index + " and it worked!"); } private class NewsArrayAdapter extends ArrayAdapter { protected ArrayList items; public NewsArrayAdapter(Context context, int textViewResourceId, ArrayList items) { super(context, textViewResourceId, items); this.items = items; } @Override public View getView(int position, View convertView, ViewGroup parent) { View v = convertView; if(v == null) { LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = vi.inflate(R.layout.row, null); } News news = this.items.get(position); if(news != null) { TextView tt = (TextView) v.findViewById(R.id.toptext); TextView bt = (TextView) v.findViewById(R.id.bottomtext); if (tt != null) { tt.setText("Name: "+ news.getName()); } if(bt != null){ bt.setText("Status: "+ news.getUrl().toString()); } } return v; } } } 

Si conoces un buen tutorial / ejemplo que me mostrará la buena manera que me encantaría verlo 🙂

2 Solutions collect form web for “Custom ListVIew y onclick”

En su actividad de lista lo que debe hacer es algo como lo siguiente:

 public class YourClass extends ListActivity { //Your Variables ArrayList<Type> yourlist; YourAdapterClass adapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); yourlist = new ArrayList<Type>(); this.adapter = new YourAdapterClass(this, R.layout.row, yourlist); setListAdapter(this.adapter); //you might be able to see if the below works instead of overriding ListView lv = getListView(); lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Log.i("testy", "I Clicked on Row " + position + " and it worked!"); } }); } @Override /** * When the user selects an item in the list, do an action * @param ListView l * @param View v * @param int position * @param long id */ protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); final int index = position; //You can add whatever you want to happen when you click here Log.i("testy", "I Clicked on Row " + index + " and it worked!"); } //other methods can go here for you list } 

Usted no quiere que su onClickListener dentro de su getView(...) en el List Adapter , que es justo donde está suponga modificar la forma en que su fila se parece (añadiendo botones, textfields, etc para cada fila) en su lugar Desea tener el onClickListener en una clase que extiende ListActivity que se conecta a su Adapter

Buena suerte, espero que esto ayudó

// Editar (agregar más información)

Necesita "agregarlo a su adaptador" en el método onCreate (ver código editado arriba) Esperemos que esto solucione el problema. Dejarme saber si todavía no trabaja sin embargo. Si eso no funciona, puede intentar usar el código setOnItemClickListener que pongo en el método onCreate lugar, si eso todavía no funciona, intentaría revisar algunos tutoriales (veré si puedo encontrarle uno bueno)

Agregué este código a mi método getView dentro de mi clase CustomAdapter.

 @Override public View getView(int position, View convertView, ViewGroup parent) { View row = convertView; /* ...Code for holder and so on... */ row.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Log.v(LOG_TAG, "ROW PRESSED"); } }); row.setTag(holder); setupItem(holder); return row; } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.