Come utilizzare setMultiChoiceItems () con un AlertDialog personalizzato che utilizza un arrayadapter efficienza?

StackOverflow https://stackoverflow.com/questions/3410810

  •  25-09-2019
  •  | 
  •  

Domanda

Sto scrivendo un lettore musicale che utilizza una scheda personalizzata che si estende BaseAdapter (adattatore efficienza) che voglio visualizzazione in un AlertDialog utilizzando setAdapter() cui l'utente può fare clic su una delle canzoni di passare a quella posizione nella playlist OR controllare le canzoni per rimuovere dalla playlist. Ho provato ad utilizzare un custom click ascoltatore in modo che un utente potrebbe semplicemente lungo fare clic per rimuovere l'elemento dalla lista, ma il listview semplicemente non funziona bene ... si stava togliendo gli articoli errati (quelli alla fine), anche se il ArrayList conteneva gli elementi corretti playlist ... (quando ho rimosso l'elemento dalla ArrayList, ho passato alla scheda in cui si chiedeva notifyDataSetChanged ... ma che semplicemente non ha funzionato come ho già detto. C'è sicuramente un bug nel AlertDialog ListView ... perché non c'è ragione per questo di aver spuntato fuori i risultati alla fine piuttosto che l'articolo corretto.

Quindi ... il metodo successivo vorrei provare è quello di utilizzare il metodo setMultiChoiceItems() del AlertDialog ... ma sembra che non funziona con un adattatore personalizzato ... solo gli array semplici. Dovrò sottoclasse AlertDialog e Override il metodo setMultiChoiceItems() o c'è un modo per farlo funzionare con un ArrayAdapter?

In sostanza, non riesco a capire come per uniformare iterate lista che la AlertDialog crea o se si passa anche quella vista in qualche modo. Inoltre, non credo che posso anche ascoltare i clic sui checkboxes se aggiungo quelli alla fila. Qualsiasi aiuto sarà molto apprezzato.

EDIT: Fare domande qui è come per magia ... ho risposto alla mia domanda ... questo è come lo ho fatto. Ho aggiunto un suggerimento per ogni checkbox che è la posizione dell'elemento nella ArrayList. Poi ho usato OnCheckedChangeListener per catturare le selezioni. Quando si imposta un suggerimento si aggiunge testo al checkbox ... dal momento che lo sfondo del AlertDialog è bianco (anche per gli elementi cliccato?) Ho appena impostato il colore del testo suggerimento per trasparenti.

holder.check.setHintTextColor(Color.TRANSPARENT);
holder.check.setHint(String.valueOf(position));
holder.check.setOnCheckedChangeListener(new OnCheckedChangeListener() {

public void onCheckedChanged(CompoundButton buttonView,
            boolean isChecked) {
        int position = Integer.parseInt((String) buttonView.getHint());
        Log.v("onCheckedChanged", "Checked: "+isChecked+" returned: "+position+" which should be "+getItem(position).name);                         
    }

});
È stato utile?

Soluzione

Questo e Questo

poi Passare un riferimento a byte [] in setMultiChoiceItems().

final boolean[] booleans = {false, true, false, true, false, false, false};

Poi controllare il valore di booleans all'interno setPositiveButton().

Se avete bisogno di passare questo AlertDialog intorno, quindi estendere AlertDialog e hanno creare un campo booleano, come descritto in 1.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top