Click-Ereignis aus checkbox, custom listview in Android
Habe ich ein benutzerdefiniertes layout für meine Listen-Ansicht Reihen:
<?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:background="@drawable/listSelector"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/checkboxSelection1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="3dip">
<CheckBox android:id="@+id/checkbox1" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/checkbox1"
android:orientation="vertical">
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</RelativeLayout>
Ich habe auch einen adapter, um die entsprechenden Daten anzeigen; und das tut er. Aus UI-Perspektive, es sieht aus wie ich es mir vorstelle.
Jedoch, wenn ich auf eine checkbox - nichts passiert. Ich möchte speichern Sie eine Liste der Elemente, die ich ausgewählt habe im backend (in der activity-Klasse im Idealfall).
In meiner onCreate der activity-Klasse, ich habe diesen code:
listView.setAdapter(adapter);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
//Click event for single list row
listView.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
int i = 1;
}
});
Ich habe die int 1 = 1; Zeile dort nur so konnte ich einen Haltepunkt setzen, um zu sehen, wenn es getroffen wird. Tut es das nicht. Ich bin mir sicher, dass ich was falsch mache, wie es angeschlossen wird, um die Liste der view-Zeile anstelle der checkbox oder so - aber ich bin mir nicht sicher, wie kann ich Haken das Ereignis der checkbox.
Wenn jemand könnte mich in die richtige Richtung würde ich mich freuen.
Dank
Edit: NUR um ZU KLÄREN
Habe ich diese in den adapter:
taskChecked.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton arg0, boolean arg1)
{
//TODO Auto-generated method stub
int i = 1;
}
});
Und Haltepunkt nicht getroffen zu werden. So dass ich versuche nur, um herauszufinden, wie ich ein Ereignis ausgelöst, in die Aktivität, anstatt nur den adapter, wenn eine checkbox ausgewählt ist oder nicht.
- Sie haben nicht die Breite,Höhe und text-Attribut der Kontrollkästchen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tun Sie es nicht!!! Ich ging fast verrückt versuchen, um widgets in einer ListView zu reagieren auf Klicks. Tun nicht put Button, ImageButton, oder Markierungsfeld-widgets in einem ListView. TextViews und ImageViews sind der Weg zu gehen. Sie versuchen zu reagieren, klicken Sie auf das Kontrollkästchen, um zu finden, was ListView-Element es ist, und dann etwas senden, um die Aktivität kann sehr schädlich für Ihre Gesundheit. Ich habe es versucht.
TextView + Bildansicht kann variieren zwischen einem Symbol mit einem Häkchen und eine ohne - Simulation einer CheckBox;
Bildansicht von selbst simulieren können eine Schaltfläche.
Bildansicht muss eingestellt werden focus=false.
Erstellen Sie zunächst eine neue Klasse, die die Felder, die Sie anzeigen möchten, für jedes item in der ListView. Ich habe eins gemacht mit dem text der Anzeige und ein boolescher Wert, der angibt, ob es aktiviert ist oder nicht. Verwenden Sie diese Klasse für die ArrayList-und ArrayAdapter.
Anschließend fügen Sie die setOnItemClickListener() für die Listenansicht, verwenden Sie dann die position zu finden, die das Element anzeigen und dann die Artikel von der neuen Klasse, und setzen Sie seinen Typ boolean.
In der MyArrayAdapter.getView-Methode getItem(position) gibt die Instanz der neuen Klasse für das Element. Verwenden Sie den boolean um zu bestimmen, welche Symbol für die Bildansicht.
Wenn Sie müssen wissen, was ist und ist nicht "geprüft" in der Listenansicht, die Sie gerade Durchlaufen der ArrayList und überprüfen Sie die boolean für jedes Element.
Habe ich es herausgefunden.
In den adapter habe ich noch diese:
Mit _activity wird die Aktivität ging in den Konstruktor von der aufrufenden activity. myObj ist deklariert als eine abschließende früher in den code, basierend auf der position in der getView und die Daten übergeben, wenn der adapter wurde konstruiert.
Sowie in der Aktivität, die ich Hinzugefügt dies:
Hoffentlich hilft jemand.