Ecco qui l'elenco delle firme dei costruttori:
Context, int Context, int, int Context, int, T[] Context, int, int, T[] Context, int, List Context, int, int, ListIn particolare, quello che ho usato prima è un costruttore a quattro parametri, precisamente l'ultimo in quanto ho usato una classe che eredita da List.
A quattro parametri posso usare anche il terzultimo, che invece di una classe di tipo List usa un semplice Array.
Poi si può usare a tre parametri, senza selezionare la view del layout.
La creazione di un CustomView estende ArrayAdapter e ne usa il costruttore a tre parametri context, layout e array, ossia il penultimo, Context, int, List
Provo a estendermi ArrayAdapter per crearmi un adapter personalizzato. Mi creo un tipo con due membri:
class Tipo{
public String testoText;
public String testoButton;
}
Di questo tipo creerò diverse istanze, che collocherò in un'arrayList.Ora provo a estendere ArrayAdapter:
class CustomAdapter extends ArrayAdapter{
Context context;
int resource;
ArrayList<Tipo> arrayList;
public CustomAdapter(Context context, int resource, ArrayList<Tipo> objects) {
super(context, resource, objects);
this.context=context;
this.resource=resource;
this.arrayList=(ArrayList)objects;
}
@Override
public View getView(int position,View convertView,ViewGroup group){
LayoutInflater layoutInflater=(LayoutInflater)context.getSystemService(LAYOUT_INFLATER_SERVICE);
convertView=layoutInflater.inflate(this.resource,null);
TextView textView=(TextView)convertView.findViewById(R.id.textView);
Button button=(Button)convertView.findViewById(R.id.button2);
textView.setText(arrayList.get(position).testoText);
button.setText(arrayList.get(position).testoButton);
return convertView;
}
}
Creo diverse istanze di Tipo, le metto in un arrayList e do l'arrayList in pasto a una istanza di CustomAdapter.
Tipo tipo=new Tipo();
tipo.testoButton="Bottone";
tipo.testoText="Testo";
Tipo tipo1=new Tipo();
tipo1.testoButton="Bottone secondo";
tipo1.testoText="Testo secondo";
Tipo tipo2=new Tipo();
tipo2.testoButton="Altro bottone";
tipo2.testoText="Altro testo";
arrayList=new ArrayList<Tipo>();
arrayList.add(tipo);
arrayList.add(tipo1);
arrayList.add(tipo2);
customAdapter=new CustomAdapter(this,R.layout.row,arrayList);
listView=(ListView) findViewById(R.id.listView);
listView.setAdapter(customAdapter);
Proviamo...Sì, eccolo.

Nessun commento:
Posta un commento