исключение Android при заполнении списка - PullRequest
0 голосов
/ 14 марта 2011

При попытке заполнить элементы в ListView по результатам оператора switch я сталкиваюсь с некоторой ошибкой. Приложение принудительно закрывается внутри эмулятора, и когда я запускаю его через отладчик Eclipse, он показывает, что основной поток завис из-за исключения IllegalStateException.

Кроме того, что означает очевидное, что он вошел в какое-то неправильное состояние, как мне это исправить? Я пытаюсь сделать все это изнутри OnItemClickListener, чтобы при щелчке по элементу оператор switch оценивал, какой элемент был нажат, а затем назначал соответствующий ListAdapter для ListView в зависимости от результата переключения. Это правильный путь? И если да, то что в моем коде ниже выдает ошибку?

final ListView lv = (ListView) findViewById(R.id.main_list);
    final String[] autos = getResources().getStringArray(R.array.auto_array);
    final ListAdapter la_auto = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_2, autos);

И затем дальше в части, касающейся слизистого фильтра

 gallery.setOnItemClickListener(new OnItemClickListener()
    {
        public void onItemClick(AdapterView parent, View v, int position, long id)
        {
            switch(gallery.getSelectedItemPosition())
            {
            case 0:
                lv.setAdapter(la_auto);
                break;

РЕДАКТИРОВАТЬ: трассировка стека LogCat останавливается на этой ошибке: «Вы должны предоставить идентификатор ресурса для TextView, и стек завис в этой точке: ArrayAdapter.createViewFromResource (int, View, ViewGroup, int) строка: 347

Есть предложения? Я предполагаю, что это как-то связано с параметрами, которые я передаю методу onItemClicked.

Ответы [ 2 ]

1 голос
/ 14 марта 2011

Попробуйте android.R.layout.simple_list_item_1.

Ответ: simple_list_item_2.xml :

<TwoLineListItem xmlns:android="http://schemas.android.com/apk/res/android"
    ...

Вам необходимо использовать ресурс, который содержит только TextView. simple_list_item_1.xml отвечает требованиям:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    ...

Попробуйте поискать другие варианты здесь или создайте свои собственные, если вы не видите ничего, что вам нравится.

0 голосов
/ 14 марта 2011

Вероятно, было бы лучше начать новый Activity с новым ListView и адаптером.

Вы можете передать выбранный элемент в качестве параметра в Intent:

Intent = new Intent(MyActivity.this, ActivityToStart.class);
intent.putExtra("selected", position);
startActivity(intent);

и получите его позже в методе onCreate вашего другого действия с помощью:

int position = getIntent().getIntExtra("selected");

Возможно, вы захотите подумать о том, какую информацию вы хотели бы поделиться между действиями.Использование нескольких действий позволит вашему пользователю нажать кнопку «Назад» и вернуться к исходному списку.

...