Во многих примерах и учебниках - как использовать gridView и адаптер - это тот случай, когда в нашем адаптере мы реализуем некоторый список имен, например, элементов в gridView.Android-адаптер для gridView - список кнопок вместо имен списков кнопок
Мы переопределяем метод 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()
в Адаптер для установки в качестве элементов наших кнопок из этого списка? Итак, чтобы не создавать новые кнопки и не указывать, что метка новой кнопки такая же, как в списке, но вставлять в gridView exatcly эти кнопки из списка!
Так что мне нужно что-то подобное? Вы знаете эту идею?
поле мой класс, продлив Button
@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 –
Хорошо, спасибо. Я начну с чтения этого –