ListView setOnItemClickListener no funciona en la vista de lista personalizada
Tengo una vista de lista con dos vistas de texto y una edición de texto en cada fila, la vista de lista setOnItemClickListener () no funciona.
Aquí mi código de Java.
- Cómo obtener el tamaño de una vista de lista
- Android: Haga que la vista en la parte superior de la lista desplaza junto con la vista de lista
- Obtener el elemento seleccionado en un ListItem ContextMenu
- Android implementa SwipeListView con Pull para actualizar
- Establecer una imagen en el elemento ListView utilizando SimpleCursorAdapter y ViewBinder
public class CreateChallan extends Activity { ListView lstCreate; String[] strmainItemCode; String[] strItem; String[] strQuantity; Context context=this; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.createchallan); lstCreate= (ListView) findViewById(R.id.createlist); lstCreate.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE); strmainItemCode= new String[]{"555551","255555","355555","455555","555555"}; strItem =new String[]{"A","B","C","D","F"}; strQuantity =new String[]{"100","200","30","400","500"}; CreateAdapter adapter= new CreateAdapter(this, strmainItemCode, strItem, s trQuantity); lstCreate.setAdapter(adapter); lstCreate.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position1, long id) { // TODO Auto-generated method stub Toast.makeText(context, "Position", Toast.LENGTH_LONG).show(); } }); } // Create List Adapter class CreateAdapter extends ArrayAdapter<String> { TextView txtItecode, txtItem; EditText editQuantity; String[] strItecode; String[] strItem; String[] strQuantity; Context context; CreateAdapter(Context context, String[] strItemcode, String[] strItem, String[] strQauntity) { super(context,R.layout.create_list_item,R.id.txtItemcode,strItemcode); this.context= context; this.strItecode= strItemcode; this.strItem= strItem; this.strQuantity= strQauntity; } public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); View row; row=mInflater.inflate(R.layout.create_list_item, parent,false); txtItecode= (TextView) row.findViewById(R.id.txtItemcode); txtItem =(TextView) row.findViewById(R.id.txtItem); editQuantity = (EditText) row.findViewById(R.id.editcreateQuantity); txtItecode.setText(strItecode[position]); txtItem.setText(strItem[position]); editQuantity.setText(strQuantity[position]); txtItecode.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(context, "click", Toast.LENGTH_LONG).show(); } }); return row; } } }
Aquí mi lista de código xml
<ListView android:id="@+id/createlist" android:layout_width="wrap_content" android:layout_height="wrap_content" android:clickable="true" android:cacheColorHint="#00000000" android:divider="#adb8c2" android:dividerHeight="1dp" android:scrollingCache="false" android:smoothScrollbar="true" android:focusable="false" android:focusableInTouchMode="false" > </ListView>
Por favor, sugerirme cómo puedo solucionar este problema.
Gracias por adelantado
- Deslice ListView de lado como en la nueva aplicación de GMail
- El RelativeLayout de Android parece estar roto
- Omitir una fila en la vista de lista
- ListFragment no acepta mi diseño
- ¿Cómo aplicar una transparencia (enfoque?) Al pulsar cualquier elemento (como lo hace Google)?
- Cómo evitar que los elementos se dupliquen cuando se desplaza la vista de reciclador
- ListView - Barra de desplazamiento rápida no visible por primera vez en 4.4 Kitkat
- Cambiar entre el evento onItemClick y onItemLongClick de Android ListView
Establezca estas propiedades
android:focusable="false" android:focusableInTouchMode="false"
para todos sus elementos de interfaz de usuario en el archivo xml de create_list_item .
También elimine las propiedades de ListView.
Así que su ListView será
<ListView android:id="@+id/createlist" android:layout_width="wrap_content" android:layout_height="wrap_content" android:clickable="true" android:cacheColorHint="#00000000" android:divider="#adb8c2" android:dividerHeight="1dp" android:scrollingCache="false" android:smoothScrollbar="true"> </ListView>
En mi opinión, porque hay Button o ImageButton en su diseño de elementos de lista personalizada.
Así que hay dos soluciones,
-
Vuelva a colocar el botón en otros elementos y quite el listener OnClick en el código del adaptador. Esta es la manera fácil de resolver esto.
-
Deshabilitar el botón de enfoque, como este,
android:focusable="false" android:focusableInTouchMode="false"
Por favor, consulte este ListView setOnItemClickListener no funciona agregando botón
Que te diviertas. @. @
Este adaptador de encargo está para usted aquí usted puede alcanzar tha tanto onclick y en el oyente del tecleo del artículo también …. Aquí he utilizado el oyente de encargo que se utiliza para pasar el objeto del artículo seleccionado. Eso es todo Si usted tiene cualquier comentario de la pregunta …Todo lo mejor
public class CustomAdapter extends ArrayAdapter<Sample> { public ArrayList<Sample> mlist; public Context context; public LayoutInflater inflater; public CustomAdapter(Context context, int resource, ArrayList<Sample> mlist) { super(context, resource); this.mlist = mlist; this.context = context; inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getPosition(Sample item) { return super.getPosition(item); } @Override public Sample getItem(int position) { return mlist.get(position); } @Override public int getCount() { return mlist.size(); } @Override public long getItemId(int position) { return super.getItemId(position); } @Override public View getView(int position, View convertView, ViewGroup parent) { convertView = inflater.inflate(R.layout.listitem, null); LinearLayout layout = (LinearLayout)convertView.findViewById(R.id.linearlayoutSample);; TextView text1 = (TextView) convertView.findViewById(R.id.item1); TextView text2 = (TextView) convertView.findViewById(R.id.item2); layout.setBackgroundColor(Color.GREEN); text1.setText(mlist.get(position).getListitem1()); text2.setText(mlist.get(position).getListitem2()); text2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // you just put your Logic here And use this custom adapter to // load your Data By using this particular custom adapter to // your listview } }); convertView.setOnClickListener(new ListenerT(Model m) { @Override public void onClick(View v) { Model m = study; } }); return convertView; } private class ListenerT implements OnClickListener { Model study; public ListenerT(Model nm) { study = nm; } @Override public void onClick(View v) { } } }
- Android gridview cabeza solución con el adaptador de reciclaje de células
- ¿Debería llamar a WakeLock antes de crear una notificación?