Android: Как динамически добавлять кнопки в GridView? - PullRequest
1 голос
/ 27 марта 2020

Я пытаюсь добавить кнопки в GridView для каждой строки из textArray.

void addButtons() {

    GridView gridView = (GridView) findViewById(R.id.gridView);
    List<Button> buttons = new ArrayList<Button>();

    for (int i = 0; i < textArray.length; i++) {
        Button newButton = new Button(this);
        newButton.setText(textArray[i]);
        newButton.setId(i);
        newButton.setOnClickListener(onClickListener);

        buttons.add(newButton);
    }

    ArrayAdapter<Button> arrayAdapter = new ArrayAdapter<Button>
            (this, android.R.layout.simple_list_item_1, buttons);
    gridView.setAdapter(arrayAdapter);

}

Но в результате я получаю это: Экран виртуального устройства

Что может быть не так? Или, может быть, есть лучший способ сделать то же самое? Я попробовал LinearLayout и все было в порядке, но я не смог прокрутить вниз.

как динамически добавить кнопку в gridview может иметь решение, но, честно говоря, оно для меня сейчас слишком сложно.

Ответы [ 2 ]

0 голосов
/ 02 апреля 2020

Итак, первоначальная проблема заключалась в том, чтобы получить представление с помощью программно сгенерированных кнопок. Первым решением был LinearLayout, но я обнаружил, что не смог прокрутить его вниз, поэтому количество кнопок было ограничено. На inte rnet я обнаружил, что GridView также может выполнять такую ​​задачу, и она будет прокручиваться. Ну, это правда, но я остановился на проблеме, упомянутой в этой теме.

После нескольких дней поиска в Google я обнаружил, что LinearLayout внутри ScrollView - это то, что мне нужно. Вот мой код xml и java для тех, кто сталкивается с одной и той же проблемой:

    <ScrollView
        <LinearLayout
            android:id="@+id/cityLayout"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical">
            <!-- Content here -->
        </LinearLayout>
    </ScrollView>
void addButtons() {

    LinearLayout linearLayout = findViewById(R.id.cityLayout);

    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams
            (LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);

    for (int i = 0; i < cityArray.length; i++) {
        Button newButton = new Button(this);
        newButton.setText(cityArray[i]);
        newButton.setId(i);
        newButton.setOnClickListener(onClickListener);

        linearLayout.addView(newButton, layoutParams);
    }
}

В любом случае, спасибо всем за помощь!

0 голосов
/ 27 марта 2020

Попробуйте, это показывает, как создавать кнопки во время выполнения https://forums.xamarin.com/discussion/49225/dynamic-buttons-in-gridview

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...