Как добавить вид списка на вкладку в Android? - PullRequest
0 голосов
/ 28 сентября 2011

Я знаю, что подобный вопрос задавался ранее, но он не совсем соответствует тому, что я искал.Здесь это идет.Я пытаюсь заполнить вкладку представлением списка, однако все примеры приводят к использованию Intent в .setContent (), что не соответствует тому, что я пытаюсь сделать.Итак, вот что я сделал:

try {
    spec = tabHost.newTabSpec("ratingSort").setIndicator("TAB 1",
                      res.getDrawable(R.drawable.ic_tab_sort))
                  .setContent((TabContentFactory) new ArrayAdapter<String>(this, R.layout.list_item, ratingSort));
    tabHost.addTab(spec);
    } catch (Exception err) {
        Log.e(err.toString(), "an error occurred...");
    }

Я добавил предложение try-catch, потому что оно вызывает ошибку во время выполнения.Видимо ошибка в .setContent (), с приведением: ERROR / java.lang.ClassCastException: android.widget.ArrayAdapter (31530).

Вот XML-файл:

<resources>
    <string-array name="rating_array">
        <item>Item 1</item>
        <item>Item 2</item>
        <item>Item 3</item>
        <item>Item 4</item>
        <item>Item 5</item>
    </string-array>
</resources>

Любые идеи, помощь очень ценится.

1 Ответ

1 голос
/ 28 сентября 2011

Вы не можете разыграть ArrayAdapter до TabContentFactory, больше, чем вы можете разыграть HashMap до Double.

Если вы хотите ListView на вкладке, либо:

  1. Поместите ListView как дочерний элемент FrameLayout в файл макета, затем используйте версию setContent(), которая принимает идентификатор виджета, или

  2. Создать фактическую реализацию TabContentFactory, которая в createTabContent() возвращает только что созданный виджет ListView

В любом случае вы можете вызватьsetAdapter() на вашем ListView, чтобы снабдить его ArrayAdapter.

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