2012-04-07 4 views
0

Ich versuche, eine ListView mit CheckBox zu erstellen ... Th ListView sollte dem Benutzer ermöglichen, entweder ein Element auszuwählen oder öffnen Sie das Element, um andere Auswahl zu wählen. Mit anderen Worten, die ListView sollte in der Lage sein, zwischen dem Klick auf das Kontrollkästchen und dem Klick auf das Objekt selbst zu unterscheiden.Android ListView mit CheckBox kann den Klick unterscheiden

Ich habe versucht, es mit android.R.layout.simple_list_item_multiple_choice zu implementieren, aber dieses erlaubt mir, nur das Kontrollkästchen zu überprüfen, auch wenn ich außerhalb des Kontrollkästchens (auf dem Element) klicken.

kann jemand helfen? mein Code
Hier,

import java.util.ArrayList; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.Toast; 

public class ListViewActivity extends Activity implements OnItemClickListener { 

ListView directoryList; 


/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    final ArrayList<String> contacts = new ArrayList<String>(); 
    contacts.add("zaid"); 
    contacts.add("hazem"); 
    contacts.add("Oubai"); 


    directoryList= (ListView) findViewById(R.id.directoryList); 


    final ArrayAdapter<String> arrayAdapter; 
    arrayAdapter = new ArrayAdapter<String>(this, 
            android.R.layout.simple_list_item_multiple_choice, 
            contacts); 


    directoryList.setAdapter(arrayAdapter); 
    directoryList.setOnItemClickListener(this); 
    directoryList.setClickable(true); 



} 

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




} 

}

+0

Ich hatte ein ähnliches Problem, und ich gelöst iy mit einem OnClickListener im Adapter selbst. Nicht der sauberste Weg, aber es hat funktioniert – znat

+0

Okay, kannst du mir bitte zeigen, wie du das im Code gemacht hast? danke –

+0

shubhayu Antwort bietet ein besseres Beispiel – znat

Antwort

2

Sie benötigen einen individuellen Array-Adapter. In Ihrem getView(), halten Sie Ihre Checkbox und setzen Sie die OnCheckedChangeListener()

Hier ist ein Tutorial, wie Sie Ihre eigenen benutzerdefinierten Adapter machen können. Das Beispiel verfügt über ein anklickbares Textfeld, das Sie jedoch für ein Kontrollkästchen ändern können.

http://www.shubhayu.com/android/listview-with-arrayadapter-and-customized-items

+0

Danke .... Hier ist ein besseres Tutorial http://android-er.blogspot.com/2010/06/using-convertview-in-getview-to-make.html –

+0

Es ist Gut, aber es zeigt nicht, wie Sie einen Listener im Adapter hinzufügen. :) – Shubhayu

+0

Ihr Tutorial war sehr nützlich für mich, aber es zeigt nicht, dass die Klasse MyCustomAdapter überschrieben wird. Es hat plötzlich eine Methode außer Kraft gesetzt, die mich verrückt gemacht hat ... Trotzdem danke. –

Verwandte Themen