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!
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.
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);
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!");
}
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);
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!
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)
setClickable comme faux à ImageButton comme ce
imagebutton.setClickable(false);
et ensuite effectuer OnItemClickListener
à listview.
si vous définissez votre ListView de manière programmatique:
mListView.setDescendantFocusability(ListView.FOCUS_BLOCK_DESCENDANTS);
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) -> {
});
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();
}
};
en Java comme d'autres suggèrent
listitem.setClickable(false);
ou en xml:
android:clickable="false"
il fonctionne très bien
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.
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" />
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: