在许多示例和教程中 - 如何使用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 –
好的,谢谢。我将从阅读这个开始 –