在許多示例和教程中 - 如何使用gridView和適配器就是這樣一種情況,在我們的適配器中,我們實現了一些GridView中的項目名稱列表。Android適配器到gridView - 按鈕列表,而不是按鈕列表名稱
我們重寫Adapter中的getView方法。然後我們在gridView中膨脹我們的項目。接下來,我們更改它的文本從我們的名單文本[位置]
這裏是例子的代碼:
公共類TileAdapter延伸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;
}
一切工作正常。但是如果我需要從列表中創建項目呢?
讓我們假設我們有一個地方List<Button> buttons
我們有我們在其他類中使用的按鈕。 GridView適配器從「MainClass」這個列表中獲取。
如何在適配器中編碼getView()
以將此列表中的按鈕設置爲項目? 因此,爲了不創建新的按鈕,並告訴新的Button的標籤與列表中的相同,但要將列表中的這些按鈕放在gridView中!
所以我需要這樣的東西?你知道這個主意嗎?
場是我的類,它伸長按鈕
@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;
}
我不明白這一點。 這是什麼意見,以及如何從列表中膨脹這些按鈕? –
視圖可以像'inflater.inflate(R.layout.field_layout,null);'中那樣膨脹;'您可以在活動中誇大它們並將它們傳遞給適配器或適配器構造器。也許你應該在繼續之前閱讀此內容 - http://www.vogella.com/tutorials/AndroidCustomViews/article.html –
好的,謝謝。我將從閱讀這個開始 –