Vista de lista de Android setOnItemClickListener no funciona

Quiero ocultar el texto de edición y el campo de botón inicialmente en la vista de lista y mostrar que editar texto y el botón de un crudo en particular en la vista de lista cuando se hace clic en raw.Entonces he intentado establecer la altura a 0 en el diseño xml y luego configurarlo A algún otro valor cuando el usuario hace clic en un crudo, pero no funciona Creo que mi evento de clic de vista de lista no funciona. En el diseño de Android que tengo vista de lista hay vista de imagen como un botón, editar campo de texto y vista de lista también. Como sigue

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainPortal" > <ListView android:id="@+id/employeeListView" android:layout_width="650dp" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="25dp" android:clickable="true"> </ListView> <EditText android:id="@+id/empPin" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/iv_start_journey_btn" android:layout_marginBottom="56dp" android:layout_marginRight="17dp" android:layout_toLeftOf="@+id/employeeListView" android:ems="10" android:inputType="number" android:hint="@string/add_emp_pin_hint" > <requestFocus /> </EditText> <ImageView android:id="@+id/iv_start_journey_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/employeeListView" android:layout_alignRight="@+id/empPin" android:layout_marginBottom="84dp" android:onClick="startJourney" android:src="@drawable/start" /> </RelativeLayout> 

He utilizado la siguiente disposición personalizada para la vista de lista

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageView android:id="@+id/emp_avatar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginTop="18dp" android:adjustViewBounds="true" android:maxHeight="80dp" android:maxWidth="80dp" android:src="@drawable/person" /> <TextView android:id="@+id/emp_number" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/emp_avatar" android:layout_toRightOf="@+id/emp_avatar" android:text="Medium Text" android:textAppearance="?android:attr/textAppearanceMedium" /> <EditText android:id="@+id/empPin" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_alignBottom="@+id/emp_avatar" android:layout_alignRight="@+id/emp_number" android:layout_toRightOf="@+id/emp_avatar" android:ems="10" android:inputType="number" > <requestFocus /> </EditText> <Button android:id="@+id/empAdd" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_alignBaseline="@+id/empPin" android:layout_alignBottom="@+id/empPin" android:layout_marginLeft="20dp" android:layout_toRightOf="@+id/empPin" android:text="@string/emp_add_btn" /> 

Aquí publico el código de Activity.java.

 public class MainPortal extends Activity { private List<Employee> employees = new ArrayList<Employee>(); EditText et; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_portal); populateEmployeeList(); //populsteListView(); ListView list = (ListView) findViewById(R.id.employeeListView); ArrayAdapter<Employee> adapter = new MylistAdapter(); list = (ListView) findViewById(R.id.employeeListView); list.setAdapter(adapter); list.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //I ADDED ON CLICK IMPLEMENTATION HERE, BUT THIS IS NOT WORKING Toast.makeText(getApplicationContext(), "CLICKED", Toast.LENGTH_SHORT).show(); } }); private void populateEmployeeList() { ... } private class MylistAdapter extends ArrayAdapter<Employee>{ public MylistAdapter(){ super(MainPortal.this,R.layout.item_view,employees); } @Override public View getView(int position, View convertView, ViewGroup parent) { View itemView = convertView; if(itemView==null){ itemView = getLayoutInflater().inflate(R.layout.item_view, parent,false); } Employee currentEmployee = employees.get(position); //Avatar ImageView imageView = (ImageView) itemView.findViewById(R.id.emp_avatar); imageView.setImageResource(currentEmployee.getAvatarId()); //Employee number TextView emp_id = (TextView) itemView.findViewById(R.id.emp_number); emp_id.setText(currentEmployee.getId()); et = (EditText) itemView.findViewById(R.id.empPin); return itemView; } } } 

Arriba he publicado algunos códigos que considero importantes. ¿Puede alguien por favor ayudarme a hacer esta tarea. Gracias por adelantado.

Agregue los siguientes atributos a su botón

  android:focusable="false" android:focusableInTouchMode="false" 

ListView setOnItemClickListener no funciona agregando botón

¿Su edittext está tomando el foco en el clic del artículo de la lista? Si es así quite el foco en edittext también.

Aquí su edittext dentro de la lista está teniendo todo el foco, por lo que esta vista de lista de clic no está funcionando. Quite el foco del cuadro editext y comenzará a trabajar

 // try this public class MainPortal extends Activity { private List<Employee> employees = new ArrayList<Employee>(); EditText et; ListView list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_portal); populateEmployeeList(); //populsteListView(); list = (ListView) findViewById(R.id.employeeListView); ArrayAdapter<Employee> adapter = new MylistAdapter(); list.setAdapter(adapter); list.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //I ADDED ON CLICK IMPLEMENTATION HERE, BUT THIS IS NOT WORKING Toast.makeText(getApplicationContext(), "CLICKED", Toast.LENGTH_SHORT).show(); } }); } } 

En mi caso setOnItemClickListener funciona bien en versiones de Android hasta 5.1.1 pero teniendo en Android 6.0.1. Por fin encontré la solución Prueba esto
Quite estas líneas de su diseño XML

 android:orientation="vertical" tools:context=".ManageRequest" android:contextClickable="true" 

Works for Me en Android Versión 6.0.1 Espero que tus problemas resueltos .. !!! Codificación feliz

  • ExpandableListView siempre se derrumba
  • ListView y SharedPreferences de opción múltiple
  • Cómo diseñar o diseñar correctamente un cajón de navegación de Android
  • ListView subobject clicable confilct
  • ¿Cómo actualizar la lista de adaptadores personalizados al instante en Android?
  • El video de TextureView que se reproduce se vuelve negro después de onPause
  • ListView hace que mi aplicación funcione muy lenta, aunque he creado Class Holder
  • Filtro de búsquedaVer ListView
  • ¿Cómo actualizar el listview cuando hago clic en el botón?
  • ¿Cómo puedo poner un ListView en un ScrollView sin colapsar?
  • No se ha encontrado ninguna vista para id en Android FragmentActivity con ListFragment
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.