Autore Topic: Listview con bottoni  (Letto 916 volte)

Offline Lomba1986

  • Utente normale
  • ***
  • Post: 173
  • Respect: +1
    • Mostra profilo
Listview con bottoni
« il: 05 Ottobre 2011, 13:17:29 CEST »
0
Ciao a tutti,
sono un utente e sono un filo esasperato...

Vi spiego il mio problema, che cercato in internet ma non mi pare di aver trovato nulla di significativo...

Quello che vorrei fare è avere una ListView composta da una textView e due pulsanti...

I due pulsanti devono avere due comportamenti differenti:
_uno deve avviare una nuova attività
_l'altro deve aprire una AlertDialog

Per ora riesco solo a comporre la ListView, ma qui mi sono arenato...

Voglio dire, non so come associare ai bottoni l'evento "click"

Codice (Java): [Seleziona]
   private static class EfficientAdapterTesto extends BaseAdapter    
        {    
               
            private LayoutInflater mInflater;    
               
            //Attributo contenente la lista di categorie da stampare    
            private String [] categories;    
               
            //Costruttore    
            public EfficientAdapterTesto(Context context, String [] _categories)    
            {    
                categories = _categories;    
                mInflater = LayoutInflater.from(context);    
            }    
       
            //Lunghezza della lista delle categorie    
            public int getCount()    
            {    
                return categories.length;    
            }    
       
            public Object getItem(int position)    
            {    
                return position;    
            }    
            public long getItemId(int position)    
            {    
                return position;    
            }    
       
            //Metodo di costruzione del singolo item della lista    
            public View getView(int position, View convertView, ViewGroup parent)    
            {    
                ViewHolder holder;    
                   
                if (convertView == null)    
                {      
                        //Assegno l'aspetto grafico (xml) al singolo item    
                    //tramite il file list_view.xml    
                    convertView = mInflater.inflate(R.layout.list_view, null);    
                    holder = new ViewHolder();    
                    //recupero gli id degli elementi    
                    holder.text2 = (TextView)convertView.findViewById(R.id.TextView02);    
                    holder.delete = (Button)convertView.findViewById(R.id.cancella);    
                    holder.details = (Button)convertView.findViewById(R.id.dettagli);    
                    convertView.setTag(holder);    
                }    
                else    
                {    
                    holder = (ViewHolder) convertView.getTag();    
                }    
       
                //Imposto il testo del item in posizione position    
                holder.text2.setText(categories[position]);    
                   
                return convertView;    
            }    

Per come ho scritto il codice estendo una classe per personalizzare ogni singolo Item, ma quando provo ad inserire la riga di codice

Codice (Java): [Seleziona]
    holder.delete.setOnClickListener(new View.OnClickListener() {    
              public void onClick(View v) {    
                FAI QUALCOSA    
              }    
          });    


dove fai qualcosa in questo caso è una AlertDialog, il sistema mi dice che non conosce l'alterDialog. Ho provato a crearmi un metodo che viene richiamto, sempre all'interno della classe EfficientAdapter, ma anche in questo caso ho un grosso problema, in quanto il costruttore della classe AlertDialog vuole il context...e non so come recuperlo...
Avevo messo una vairabile globale, ma diceva che non potevo usare oggenti non statici in un ambiente statico...


Suggerimenti??
Non esistono problemi, ma solo soluzioni...

Offline solaris

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One
  • Sistema operativo:
    Windows XP
Re:Listview con bottoni
« Risposta #1 il: 05 Ottobre 2011, 16:48:32 CEST »
0
Hai una classe che rappresenta la VIEW collegata alla singola riga?
In tal caso, definisci il listener all'interno del metodo onFinishInflate() della view.

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Listview con bottoni
« Risposta #2 il: 06 Ottobre 2011, 08:18:18 CEST »
0
all'inizio della getView dell'adapter, ti prendi la view della riga della lista:

Codice (Java): [Seleziona]
View view = super.getView(position, convertView, parent);
successivamente, utilizzi questa view per prenderti i pulsanti e/o gli elementi con i quali vuoi interagire, per esempio:

Codice (Java): [Seleziona]
ImageView myImage = (ImageView) view.findViewById(R.id.myImage);
poi puoi associare un onClickListener ad ognuno degli elementi della riga che ti sei preso in precedenza.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/