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
- Cómo hacer que android listview desplazable?
- Listview en SwipeRefreshLayout - no muestra nada cuando el adaptador personalizado tiene sólo una fila para mostrar
- Ocultar ListView Encabezado / Ocultar Single Divider en una lista
- ListView con el primer elemento visible que tiene un diseño diferente
- No se puede convertir de android.app.FragmentManager a android.support.v4.app.FragmentManager
<?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.
- Los elementos de ListView no se pueden hacer clic después de establecer el oyente de clics en getView ()
- Android ListView no resalta cuando se establece OnClickListener
- Actualizar Android ListActivity cuando cambia los datos de la lista?
- Android - Agregar y mostrar elementos a ListView uno a la vez usando un ArrayAdapter
- setChoiceMode (ListView.CHOICE_MODE_SINGLE) ¿Cómo cancelar la selección?
- Cómo agregar un TextView dinámicamente en los elementos ListView Android?
- Cómo obtener redes wifi disponibles y mostrarlas en una lista en android
- ¿Cuál es el beneficio de ViewHolder?
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
- No se puede obtener el ejemplo de HelloWorld de cruce de peatones para trabajar
- Error "tipo de retorno int no es compatible con Intent" cuando se utiliza la clase FirebaseMessagingService