2013-07-18 5 views
0

Я хочу динамически создавать кнопку в своем приложении. Кнопки должны быть созданы на основе элементов, полученных из базы данных. Каков наилучший способ достичь этого. Должен ли я пойти на макет сетки или линейную компоновку. Мой макет прост с max 3 кнопками в строке. Как только первая строка будет завершена, кнопки должны быть размещены во второй строке.Лучший способ создания кнопок динамически

Я просмотрел много похожих вопросов (некоторые из них имели макет сетки, которые использовали Linear layout), но не смогли решить, что является оптимальным способом реализации этого.

Я полный новичок в приложении для Android, поэтому любые фрагменты кода будут действительно полезными. Извините, если кто-то считает, что это дублированный вопрос (я много раз искал до публикации, но не нашел подходящего ответа на макет, который будет использоваться.)

Спасибо.

+0

Лучшее, что вы можете сделать, это попробовать оба и посмотреть, что выглядит лучше. Я бы также предложил TableLayout. –

+0

Вы говорите, что хотели бы знать, как динамически создавать элементы управления кнопками ... но, похоже, ваш вопрос заключается в том, как упорядочить кнопки в элементе управления компоновкой? – scottb

ответ

1

Попробуйте использовать gridView так же, как и код.

// in xml write this code 

    <GridView 

     android:id="@+id/calendar" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:numColumns="3" /> 


// grid adapter 

public class GridAdapter extends BaseAdapter { 
    private final Context _context; 

    private final List<String> list; 

    public GridAdapter(Context context, ArrayList<String> list) { 
     super(); 
     this._context = context; 
     this.list = list; 
    } 

    public String getItem(int position) { 
     return list.get(position); 
    } 

    @Override 
    public int getCount() { 
     return list.size(); 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     Button button = new Button(_context); 
     button.setText("button" + list.get(position)); 
     return button; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 
} 


/// in oncreate 

gridView.setAdapter(new GridAdapter(getApplicationContext(),list); 
Смежные вопросы