He utilizado un ListView Personalizado y estoy mostrando algunos datos utilizando el mismo ListView.

Cuando hago clic en la Vista de Lista elemento, el onClickListener no está recibiendo la llamada. Yo no soy capaz de seleccionar cualquier elemento de la lista.

Diseño Código:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_marginBottom="16dp"
android:background="@drawable/list_selector"
android:clickable="true"
android:orientation="horizontal"
android:padding="5dip" >

<LinearLayout
    android:id="@+id/imgProperty"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_marginRight="5dip"
    android:padding="3dip" >

    <ImageView
        android:id="@+id/list_image"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:contentDescription="@string/app_name"
        android:src="@drawable/ic_launcher" 
        android:focusable="false"/>
</LinearLayout>

<TextView
    android:id="@+id/tvCity"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_marginLeft="75dip"
    android:layout_toRightOf="@+id/list_image"
    android:paddingBottom="10dip"
    android:text="property"
    android:textColor="#040404"
    android:textSize="15sp"
    android:textStyle="bold"
    android:typeface="sans" />

<TextView
    android:id="@+id/tvprice"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/imgProperty"
    android:layout_alignLeft="@+id/tvCity"
    android:text="Price" 
    android:focusable="false"/>

</RelativeLayout>

Adaptador código:

 public class CustomListAdapter extends BaseAdapter {

 ArrayList<Propety> PropertiesArray;
private LayoutInflater Inflater;


public CustomListAdapter(ArrayList<Propety> PropertiesArray) {  

   this.PropertiesArray=PropertiesArray;

}
@Override
public int getCount() {
    //TODO Auto-generated method stub
    return PropertiesArray.size();
}

@Override
public Object getItem(int position) {

    return PropertiesArray.get(position);
}

@Override
public long getItemId(int position) {

    return position;
}

@Override
public View getView(int position, View convertView, final ViewGroup parent) {

     if (convertView == null) {
            LayoutInflater inflater = LayoutInflater.from(parent.getContext());
            convertView = inflater.inflate(R.layout.customlistview, parent, false);
        }


        final Propety ListArray = PropertiesArray.get(position);

       TextView tvPropertyName = (TextView) convertView.findViewById(R.id.tvCity);
       tvPropertyName.setText(ListArray.getName());

        TextView tvPrice = (TextView) convertView.findViewById(R.id.tvprice);
        tvPrice.setText(ListArray.getPrice());

       ImageView imgProperty = (ImageView) convertView.findViewById(R.id.list_image);
       imgProperty.setImageResource(R.drawable.ic_launcher);


       convertView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

             Toast.makeText(parent.getContext(), "view clicked: " + ListArray.getName(), Toast.LENGTH_SHORT).show();
        }
    });


    return convertView;
}

}

ListView código:

 ListView propertylistview = (ListView) findViewById(R.id.listview);
CustomListAdapter customlistview=new CustomListAdapter(PropertiesArray);
propertylistview.setAdapter(customlistview);

ListView XML:

 <ListView
    android:id="@+id/listview"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/customview"
    android:layout_marginBottom="10dp"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_marginTop="24dp"
    android:background="@drawable/list_selector"
    android:textAlignment="center" >

custom.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >

<SurfaceView
    android:id="@+id/surface"
    android:layout_width="fill_parent"
    android:layout_height="match_parent" />

<TextView
    android:id="@+id/txtangle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_marginBottom="115dp"
    android:layout_marginLeft="95dp"
    android:text="" />

<ListView
    android:id="@+id/listview"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/customview"
    android:layout_marginBottom="10dp"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_marginTop="24dp"
    android:background="@drawable/list_selector"
    android:textAlignment="center" >

</ListView>

<view
    android:id="@+id/customview"
    android:layout_width="110dp"
    android:layout_height="110dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    class="com.example.samplebuapp.CustomCompass" />

<view
    android:id="@+id/view1"
    android:layout_width="110dp"
    android:layout_height="110dp"
    android:layout_above="@+id/listview"
    android:layout_alignParentRight="true"
    android:layout_marginRight="18dp"
    class="com.example.samplebuapp.CustomView" />

<LinearLayout
    android:id="@+id/rl1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/listview"
    android:orientation="vertical" 
    android:focusable="false">
</LinearLayout>

</RelativeLayout>

Incluso de desplazamiento no está funcionando.

Soy incapaz de averiguar por qué está sucediendo esto? Me estoy perdiendo de algo?

Cualquier ayuda en la resolución de este es de agradecer.

tal vez esto puede ayudar a: thepcwizard.en/2012/09/…
Parece que el toque de eventos no se propaguen a los ListView. Es allí cualquier cosa en su archivo de diseño junto con el ListView que podría evitar el contacto desde que se propaga?
Estoy mostrando el ListView, junto con otras Vistas Personalizadas y surfaceView. Por favor, consulte la custom.xml

OriginalEl autor Mahe | 2013-05-08

6 Comentarios

  1. 10

    El siguiente va a hacer el trabajo en su caso.

    ListView propertylistview = (ListView) findViewById(R.id.listview); 
        propertylistview.setOnItemClickListener(  myListViewClicked ):
    
            OnItemClickListener myListViewClicked = new OnItemClickListener() {
    
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Toast.makeText(YourActivity.this, "Clicked at positon = " + position, Toast.LENGTH_SHORT).show();
    
                }
            };

    No te olvides de quitar el siguiente de la CustomAdapter

      convertView.setOnClickListener(new OnClickListener() {
    
        @Override
        public void onClick(View v) {
    
             Toast.makeText(parent.getContext(), "view clicked: " + ListArray.getName(), Toast.LENGTH_SHORT).show();
        }
    });
    Gracias @Ninja. Eso no es trabajo. Estoy mostrando el ListView en un surfaceView. Mostrar ListView en un SurfaceView causa algún problema??
    Utilice myListViewClicked antes de que se haya declarado que es..?
    Mediante la asignación de OnItemClickListener a una variable de primera (luego pasar a setOnItemClickListener), misteriosamente resuelto mi problema. Luego, después de eso cuando lo hago sin tener que asignar a la variable, a continuación, que todavía funciona.)

    OriginalEl autor Lazy Ninja

  2. 2

    el código simple que resolver mi problema, y a la vista de método.setOnClickListener estar dentro de mi adaptador personalizado

        view.setFocusable(false)

    OriginalEl autor Jhonatas

  3. 2

    Si el toque eventos están recibiendo interceptado dentro de la célula de diseño, en el diseño personalizado de la célula, establecer
    android:descendantFocusability="blocksDescendants"
    en el nivel superior de diseño de la celda. Para mí, era demasiado dolor para agregar atributos xml para cada punto de vista individual.

    Tenga en cuenta que esto también puede ser establecido en el código:

    cell.setDescendantFocusability(FOCUS_BLOCK_DESCENDANTS);

    También he intentado esto con un ListView en el interior de una célula, y tuve que anular onTouchEvent para conseguir que funcione:

    public class NoTouchListView extends ListView {
    
        @Override
        public boolean onTouchEvent(MotionEvent ev) {
            return false;
        }
    }

    OriginalEl autor GLee

  4. 2

    Revise su lista fila de diseño una vez :

    diseño o cualquier punto de vista no se debe » android:clickable=»true» y
    android:seleccionable=»true»

    si es que sólo hay que eliminar y ejecutar de nuevo la aplicación.

    OriginalEl autor Surendar D

  5. 1

    Incluso yo estaba teniendo el mismo problema, estoy teniendo casilla de verificación, hizo la siguiente enmascarador itemClickListener trabajo,

    Añadido las siguientes propiedades de la casilla,

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

    y ItemClickListner comenzó a trabajar.

    Por ejemplo detallado usted puede ir a través del enlace,

    http://knowledge-cess.com/android-itemclicklistner-with-checkbox-or-radiobutton/

    Espero ayuda Saludos!!

    OriginalEl autor Gokul Kulkarni

Dejar respuesta

Please enter your comment!
Please enter your name here