Ho un ListView
sul mio ListActivity
e mi piacerebbe che le righe dello ListView
fossero 1 di 3 layout diversi. Il primo elemento del mio elenco utilizzerà sempre il layout A, il secondo elemento del mio elenco utilizzerà sempre il layout B e tutti gli elementi successivi utilizzeranno il layout C.Elenco visualizzazioni con layout di più articoli
Ecco la mia funzione getView:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// get the View for this list item
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
switch (position) {
case 0:
v = vi.inflate(R.layout.layout_A, parent, false);
break;
case 1:
v = vi.inflate(R.layout.layout_B, parent, false);
break;
default:
v = vi.inflate(R.layout.layout_C, parent, false);
break;
}
}
switch (position) {
case 0:
TextView txtLabel1 = (TextView)findViewById(R.id.label1);
TextView txtLabel2 = (TextView)findViewById(R.id.label2);
if (txtLabel1 != null) {
txtLabel1.setText("sdfasd");
}
if (txtLabel2 != null) {
txtLabel2.setText("dasgfadsasd");
}
break;
default:
break;
}
// return the created view
return v;
}
R.id.label1
e R.id.label2
sono TextViews
su R.layout.layout_A
. Tuttavia, txtLabel1
e txtLabel2
sono nulli dopo aver provato a impostarli. Perché?
Ho passato questo codice nel debugger e ha gonfiato il layout corretto (R.layout.layout_A
) e sono caduto nel caso corretto di seguito per impostare il testo R.id.label1
e R.id.label2
.
Inoltre, se c'è un modo migliore per farlo, per favore fatemelo sapere.
Controllare [questo tutorial] (http://android.amberfog.com/?p=296). Spiegano qualcosa di simile a ciò che stai cercando di ottenere. – Macarse