In vielen Beispielen und Tutorials - wie GridView und Adapter zu verwenden ist der Fall, dass in unserem Adapter implementieren wir einige Liste von zum Beispiel Namen von Elementen in GridView.Android Adapter zu GridView - Liste der Schaltflächen statt Liste Namen der Schaltflächen
Wir überschreiben Methode getView in Adapter. Dann inflationieren wir unseren Artikel in gridView. wir ändern es nächsten Text aus der Liste in Text [Position]
ist hier Beispiel-Code:
public class TileAdapter erweitert BaseAdapter {
private Context context;
private Tile[] tiles;
public TileAdapter(Context context, Tile[] tiles){
this.context = context;
this.tiles= tiles;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View gridView;
if(convertView == null){
gridView = new View(context);
gridView = inflater.inflate(R.layout.layout_tile, null);
TextView textView = (TextView) gridView.findViewById(R.id.tile_title);
textView.setText(tiles[position].getTitle());
}else{
gridView = (View) convertView;
}
return gridView;
}
alles funktioniert. Aber was, wenn ich Gegenstände aus einer Liste erstellen muss?
Nehmen wir an, wir haben irgendwo List<Button> buttons
, wo wir unsere Tasten haben, die wir auch in anderen Klassen verwenden. GridView Adapter erhält von der "MainClass" diese Liste.
Wie wird getView()
in Adapter codiert, um als Elemente unsere Tasten aus dieser Liste zu setzen? Also nicht neue Buttons zu erstellen, und sagen, dass die Bezeichnung der neuen Button ist die gleiche wie in der Liste, aber in GridView exatcly diese Tasten aus der Liste setzen!
Also brauche ich so etwas? Sie kennen die Idee?
Feld ist meine Klasse, die Taste
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(convertView == null){
view= new View(context);
view= inflater.inflate(R.layout.field_layout, null);
//This is bad - but You know what i want?
Field field = (Field) view.findViewById(R.id.field);
field = fields.get(position);
}else{
view= (View) convertView;
}
return view;
}
Ich verstehe es nicht. Was ist das für Ansichten und wie man diese Knöpfe aus der Liste aufbläht? –
Eine Ansicht kann wie in 'inflater.inflate (R.layout.field_layout, null) aufgebläht werden;' Sie können sie in Ihrer Aktivität aufblasen und an den Adapter oder den Adapterkonstruktor übergeben. Vielleicht sollten Sie dies lesen, bevor Sie fortfahren - http://www.vogella.com/tutorials/AndroidCustomViews/article.html –
Ok, danke. Ich werde damit anfangen, das zu lesen –