Использование счетчика в другом представлении с определенным другим классом (Android) - PullRequest
2 голосов
/ 01 декабря 2009

Возникла проблема с загрузкой массива в спиннер, который находится в другом представлении. Массив правильно определен в arrays.xml с именем beerstyles. Пивоваренный стилус определяется как идентификатор счетчика в carbonationcalculator_view.xml. Это работает, когда код находится в основном классе java, но не в дополнительном классе carbonationcalculator. Все работает, за исключением того, что спиннер не заполнен массивом.

Вот код:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.carbonationcalculator_view);

    Spinner s = (Spinner) findViewById(R.id.beerstylespinner);

    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
            this, R.array.beerstyles, R.layout.carbonationcalculator_view);

    adapter.setDropDownViewResource(R.layout.carbonationcalculator_view);

    s.setAdapter(adapter);
}

1 Ответ

1 голос
/ 01 декабря 2009

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

То, что вы должны использовать, это что-то вроде android.R.layout.simple_list_item_1. Вы можете эмулировать демо List1.java , но вместо их конструктора вы бы использовали:

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
        this, R.array.beerstyles, android.R.layout.simple_list_item_1);

Кроме того, вам не нужно вызывать ArrayAdapter.setDropDownViewResource() после использования ArrayAdapter.createFromResource() - третий параметр это ресурс раскрывающегося списка.

...