ListView avec onitemclicklistener android

j'utilise une coutume ListView 151980920" avec RatingBar et ImageButton . Voici mon problème: Lorsque je clique sur mon ListView , mon OnItemClickListener ne fonctionne pas. Svp quelqu'un peut-il m'aider. Code:

ListView lv = getListView();
setContentView(lv);
lv.setOnItemClickListener(new OnItemClickListener()
{
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
    { 
        Toast.makeText(SuggestionActivity.this, "" + position, Toast.LENGTH_SHORT).show();
    }
});

Merci d'avance!

68
demandé sur Charuක 2011-10-04 13:34:42

15 réponses

bien qu'il s'agisse d'une très vieille question, mais je poste encore une réponse à celle-ci afin qu'elle puisse aider quelqu'un. Si vous utilisez un layout dans la vue Liste, utilisez-le ...

android:descendantFocusability="blocksDescendants"    

... sur la première mise en page du parent à l'intérieur de la liste. Cela fonctionne comme par magie le clic ne sera consommé par aucun élément à l'intérieur de la liste mais ira directement à l'élément de liste.

109
répondu Shaista Naaz 2013-08-24 09:44:43

Hé, regardez ça, ça marche pour moi... espérons que cela fonctionne pour u trop

si l'article de la liste contient ImageButton

problème: OnItemClickListener ne répond tout simplement pas du tout!

raison: aucune idée

Solution: dans le code, mettre ImageButton 's focus à “false”

1: ImageButton button = (ImageButton) convertView.findViewById(R.id.imageButton);

2: button.setFocusable(false);

17
répondu Grv9098 2012-10-20 20:07:45

j'ai une activité qui étend L'activité de liste.

j'ai essayé de faire quelque chose comme cela dans onCreate:

ListView listView = getListView();
listView.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {

        Log.i("Hello!", "Y u no see me?");

    }

});

mais ça n'a pas marché.

au lieu de cela, j'ai simplement eu besoin de passer outre onListItemClick:

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {

    Log.i("Hello!", "Clicked! YAY!");

}
10
répondu poshaughnessy 2012-11-25 11:18:26

si la vue d'un élément de la liste contient un bouton ou une case à cocher ou un imagebutton, le onitemclicklistener et onitemlongclicklistener ne fonctionne pas en raison de lui a propre onclick listener.

set focusable fausse

holder.button.setFocusable(false);
10
répondu RVG 2013-07-16 09:53:43

si vous voulez activer l'élément cliquez dans la vue de liste Utiliser

listitem.setClickable(false);

cela peut sembler erroné à la première place mais cela fonctionne!

9
répondu Rahul Tiwari 2012-07-16 14:13:30

1) vérifiez si vous utilisez OnItemClickListener ou OnClickListener (qui n'est pas pris en charge pour ListView)

Documentation Développeurs Android ListView

2) Vérifiez si vous avez ajouté Listener à votre ListView correctement. Il est accroché sur ListView pas sur ListAdapter!

ListView.setOnItemClickListener(listener);

3) Si vous devez utiliser OnClickListener, vérifiez si vous utilisez DialogInterface.OnClickListener ou View.OnClickListener (ils peuvent être facilement échangés s'ils ne sont pas validés ou s'ils utilisent les deux)

8
répondu Marek Sebera 2011-10-04 09:41:58

setClickable comme faux à ImageButton comme ce

imagebutton.setClickable(false);

et ensuite effectuer OnItemClickListener à listview.

4
répondu Ramakrishna 2011-10-04 09:45:32

si vous définissez votre ListView de manière programmatique:

mListView.setDescendantFocusability(ListView.FOCUS_BLOCK_DESCENDANTS);
4
répondu jmaculate 2014-02-25 15:49:49

vous pouvez également utiliser" lambda", la syntaxe Lambda n'est pas supportée sous Java 1.7 ou des JVM antérieures.

    listView.setOnItemClickListener((parent, view, position, id) -> {

    });
4
répondu bheatcoker 2015-07-03 14:31:23
listPaired = (ListView) findViewById(R.id.listView1);
listPairedData = new ArrayList<String>();
araPaired = new ArrayAdapter(this, android.R.layout.simple_list_item_1, listPairedData);
listPaired.setAdapter(araPaired);
listPaired.setOnItemClickListener(listPairedClickItem);

private OnItemClickListener listPairedClickItem = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {

String info = ((TextView) arg1).getText().toString();
Toast.makeText(getBaseContext(), "Item "+info, Toast.LENGTH_LONG).show();
}
 };
3
répondu tsiftis 2015-06-19 10:53:28

en Java comme d'autres suggèrent

listitem.setClickable(false);

ou en xml:

android:clickable="false"

il fonctionne très bien

2
répondu V. Kalyuzhnyu 2016-02-07 07:27:11

est là et l'image dans la vue Liste que vous utilisez> ensuite, suivez le lien: http://vikaskanani.wordpress.com/2011/07/20/android-custom-image-gallery-with-checkbox-in-grid-to-select-multiple/

je pense que lorsque vous travaillez sur le lien que j'ai fourni en premier à chaque chose sera beau travail, j'ai essayé. Si vous voulez une réponse plus précise, veuillez élaborer la question avec le code et la description.

1
répondu DAS 2011-10-04 09:54:26

il suffit d'insérer la ligne dans la barre de notation:

android:isIndicator="true"

en XML la barre de notation ressemble à ceci.

<RatingBar
    android:id="@+id/ratingBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="6dp"
    android:isIndicator="true"
    android:clickable="false"
    android:focusable="false"
    android:focusableInTouchMode="false" />
1
répondu Abhishek Majumdar 2015-04-09 19:40:35
lv.setOnItemClickListener(new OnItemClickListener()
    {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            // TODO Auto-generated method stub

        }
    });
1
répondu 2015-04-28 19:40:01

Android onitemclicklistener entre en conflit avec le OnClickListener des éléments de la rangée de listview dans Adaptateur. Vous devez juste vous assurer que votre code est bien géré et correctement écrit avec des normes.

cochez la réponse dans le lien ci-dessous:

Faire liste cliquable

1
répondu Zohaib Hassan 2017-05-23 12:26:35