OnItemClickListener funktioniert nicht mit ListView-Element, das Schaltfläche enthält
Habe ich ListView
mit benutzerdefinierten Adapter
liefert View
zu ListView
auf diese Weise:
public View getView(int position, View convertView, ViewGroup parent)
{
RelativeLayout.LayoutParams lineParams;
RelativeLayout line=new RelativeLayout(context);
TextView tv=new TextView(context);
tv.setText("Text in postion="+i);
lineParams=new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lineParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
line.addView(tv, lineParams);
lineParams.addRule(RelativeLayout.CENTER_IN_PARENT);
//checkbox
CheckBox checkBox=new CheckBox(context);
lineParams=new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lineParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
lineParams.addRule(RelativeLayout.CENTER_IN_PARENT);
line.addView(checkBox, lineParams);
return line;
}
Und irgendwo in ListView
es gibt setOnItemClickListener()
sollte das abfangen Element Klick auf Ereignisse. Mein problem, dass, immer wenn ich versuche, fügen Sie Kontrollkästchen, um zu posten - ich bekomme keine responces von meinem ListView
. Wenn ich überspringen CheckBox
oder andere Button
es funktioniert.
Ich bin wirklich stecken mit diesem problem, ich habe versucht, alle Arten von Layouts, ausrichten, Verpackung und so weiter - nutzlos. Sieht aus wie CheckBox
stört ListView
Element, klicken Sie auf Ereignisse.
Irgendwelche Ideen, wie Sie zu überwinden?
InformationsquelleAutor der Frage barmaley | 2011-12-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
fügen Sie einfach diese Zeile in der Positionssicht statt listView selbst
überprüfen Sie mehr Details über diese aus Android custom ListView nicht in der Lage, um auf Elemente klicken
InformationsquelleAutor der Antwort Pratik
Wenn Sie ImageButtons in der Liste Element, das Sie hinzufügen müssen:
dem root-Element Liste element [wie den root-layout].
Dann in jedem ImageButton-Steuerelement in der Liste Element, das Sie hinzufügen müssen:
Dieser arbeitete für mich, aber ich war mit ImageButtons, nicht die standard-Schaltfläche.
InformationsquelleAutor der Antwort dandev91
Habe ich auch vor dem gleichen Problem, das ich habe versucht
android:focusable="false"
zur listview, aber es nicht funktioniert, dann füge ich dies zu listview-Element.. wie in meinem listview-Element habe ich uesed Toggle-Taste, die habe problem, ich fügeandroid:focusable="false"
zu Toggle-button und listview-Element auf Klick-listener mit der Arbeit beginnen wiederInformationsquelleAutor der Antwort Jaiprakash Soni
Fügen Sie folgende Zeile in der listView
oder stellen Sie sicher, dass folgende Zeilen in der layout-text-Felder
InformationsquelleAutor der Antwort GameBug
Hatte ich auch das problem hatte der ein Button in meine ListView. Leider nur die Einstellung der Fokus auf false für alle Objekte in mein Adapter hat bei mir nicht funktioniert.
Ich habe jetzt einen workaround.
Den Adapter ein, erstellen Sie einen OnClickListener für den button (oder andere anklickbare Objekte), wenn Sie nicht bereits getan haben. In diesem OnClickListener rufen Sie die OnItemClickListener selbst.
Es bedeutet, dass Sie benötigen, um geben Sie Ihre adapter-Zugriff auf die übergeordnete ListView und die OnItemClickListener.
InformationsquelleAutor der Antwort Vincent Ketelaars
Können Sie überlegen, zu schreiben, Ihre auf OnTouchEvent in Ihre listview-Element und senden Sie die korrekte touchEvent Ihnen untergeordneten Ansicht die Taste .
InformationsquelleAutor der Antwort Lion Lv
Nun, ich kenne keine der oben genannten Lösungen arbeiten.Ich habe versucht, ändern von xml-Attributen, sondern diejenigen, die nicht arbeiten, Aber ich setzte es in eine neue Mode.
Hier ist, wie:
Erstellen Sie eine Schnittstelle
CheckBoxOnCheckListener
mit der MethodeonCheckBoxChecked
auf und übergeben die notwendigen Parameter, Schnittstelle implementierenCheckBoxOnCheckListener
in Ihrem Aktivität oder fragment mit listView.Nächstes adapter, deklarieren Sie eine
mListener
alsCheckBoxOnCheckListener
und übergeben Sie diese als parameter an Adapter Konstruktor vonfragment/activity
und werfe esCheckBoxOnCheckListener
und weisenmListener
.Nächsten Satz
mListener
alsitemView.onClick
oderCheckBox.onCheckCheckedListener
undonCheckChanged
Aufruf der MethodemListener.onCheckBoxChecked
.Das ist es. Es wird auf jeden Fall funktionieren,bei mir hat es geklappt.
Für code einfach pm.
InformationsquelleAutor der Antwort Amit
Wenn Sie
ListView
imActivity
stellen Sie sicher, dass setupsetOnItemClickListener()
InformationsquelleAutor der Antwort grzesl