Android ListView con caselle di controllo: come catturare gli elementi selezionati?

Devo fare un ListView con CheckBoxes e quindi visualizzare gli elementi controllati e non selezionati quando l'utente preme il button. Il problema è che non so come farlo, riesco a visualizzare il ListView con il CheckBox con questo codice:

 package guestCheckBox.com; import java.net.URL; import java.util.ArrayList; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; public class GuestCheckBox extends Activity { private ListView lView; ArrayList<String> guest= new ArrayList <String>(); @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); lView = (ListView) findViewById(R.id.ListView01); try{ URL url = new URL( "http://tanjungrhu.jigsy.com/files/documents/Check.xml"); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new InputSource(url.openStream())); doc.getDocumentElement().normalize(); NodeList words = doc.getElementsByTagName("Guest"); for(int i=0;i<words.getLength();i++){ Node node = words.item(i); Element fstElmnt = (Element) node; NodeList NameList = fstElmnt.getElementsByTagName("Name"); Element NameElement = (Element) NameList.item(0); NameList = NameElement.getChildNodes(); guest.add((((Node) NameList.item(0)).getNodeValue())); } } catch (Throwable t){ Toast.makeText(this, "Exeption:" + t.toString(), 2000).show(); } //Set option as Multiple Choice. So that user can able to select more the one option from list lView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, guest)); lView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); } } 

e qui il mio main.xml :

  • Ottenere i dati memorizzati dal database in ListView.
  • Libreria Android Volley: Come submit un'image al server?
  • Come posso passare una function come parametro ad un'altra function in android?
  • ArrayAdapter in android per creare listview semplice
  • ListView personalizzato e menu contestuale. Come ottenerlo?
  • Come impedire l'inversione di un file APK Android per proteggere il codice?
  •  <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" /> <ListView android:id="@+id/ListView01" android:layout_width="fill_parent" android:layout_height="fill_parent"> </ListView> </LinearLayout> 

    Qualcuno mi mostrerà come posso fare i pulsanti e come mostrerò gli elementi controllati e non controllati quando l'utente preme i pulsanti?

  • Aggiunta di attributi personalizzati nel tag di messaggio nel pacchetto XMPP utilizzando asmack per android?
  • Android: Conversione da colore a Int
  • differenza tra @id e @android: id
  • android ottiene l'output audio complessiva del dispositivo in pcm
  • Come posso get i dati grezzi GPS (pseudo gamma dei satelliti)?
  • Devo dichiarare sia WRITE_EXTERNAL_STORAGE che READ_EXTERNAL_STORAGE?
  • One Solution collect form web for “Android ListView con caselle di controllo: come catturare gli elementi selezionati?”

    Non ho capito completamente che cosa è il problema, ma posso fornirti un'estensione utile di ListView che ti aiuta a manipolare con i dati di string (impostare \ get valori controllati):

     public class MultipleChoiceListView extends ListView { public MultipleChoiceListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public MultipleChoiceListView(Context context, AttributeSet attrs) { super(context, attrs); } public MultipleChoiceListView(Context context) { super(context); } @Override public void setAdapter(ListAdapter adapter) { throw new RuntimeException( "This component doesn't support custom adapter. Use setData method to supply some data to show."); } /** * Sets the data that should be displayed for choosing * * @param data List<String> */ public void setData(List<String> data) { super.setAdapter(new ArrayAdapter<String>(getContext(), android.R.layout.simple_list_item_multiple_choice, data)); super.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); } /** * Sets the data that should be choosen by default * * @param checkedData List<String> */ public void setCheckedData(List<String> checkedData) { for (int index = 0; index < getCount(); index++) { if (checkedData.contains(getItemAtPosition(index))) { setItemChecked(index, true); } } } /** * Returns checked by the user data passed in {@link #setData(List)} * * @return List<String> */ public List<String> getCheckedData() { SparseBooleanArray checked = getCheckedItemPositions(); List<String> checkedResult = new ArrayList<String>(); for (int i = 0; i < checked.size(); i++) { if (checked.valueAt(i)) { checkedResult.add(getAdapter().getItem(checked.keyAt(i)).toString()); } } return checkedResult; } 

    }

    Esempio di utilizzo:

      private void initListMultiple() { String[] data = new String[] {"first", "second", "third", "forth"}; String[] checkedData = new String[] {"second", "forth"}; multipleChoiceListView.setData(Arrays.asList(data)); multipleChoiceListView.setCheckedData(Arrays.asList(checkedData)); } private void onTestListButtonClicked(View view) { listResultTextView.setText(Arrays.toString(listView.getCheckedData().toArray())); } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.