Проблема с помещением Listview в TabHost (как представление, а не как действие) - PullRequest
0 голосов
/ 12 февраля 2012

Я пытаюсь вставить ListView в качестве одной из вкладок в tabhost. Я проверил сеть и нашел несколько реализаций, которые говорят, что они работают, но не для меня (ни в своих собственных проектах, ни когда включены в мои).

Я остановился на следующем, который работает (если не сбой), и я не получаю никаких ошибок в LogCat, но вкладка кажется пустой.

Я проверил массив, предоставляющий список (tooldisplay), и он заполнен.

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

setupdetail.xml:

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:padding="5dp" >
        <TextView
            android:id="@+id/setupheader"
            android:layout_width="fill_parent"
            android:layout_height="20dp"
            android:text="This will be the setup header"
            android:textSize="15dp" />
        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="30dp"
            android:gravity="bottom" />
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:padding="5dp" >
            <!-- General Info Tab -->
            <LinearLayout
                android:id="@+id/general_tab"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical" >
            </LinearLayout>
            <!-- Tool Tab -->
            <ListView
                android:id="@+id/list1"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                android:drawSelectorOnTop="false" />
        </FrameLayout>
    </LinearLayout>
</TabHost>

действие для tabhost (отредактировано для удаления неактуального кода):

public class SetupDisplay extends TabActivity {
    private String[] tooldisplay = new String[20];
    private ListView mListView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.setupdetailmain);
        // Set up tabs
        TabHost tabHost = getTabHost();
        TabHost.TabSpec spec;
        spec = tabHost.newTabSpec("general").setIndicator("General")
                .setContent(R.id.general_tab);
        tabHost.addTab(spec);
        spec = tabHost.newTabSpec("tools").setIndicator("Tools")
                .setContent(R.id.list1);
        tabHost.addTab(spec);
        // Load data into tooldisplay[]
        // get view & set adapter
        mListView = (ListView)findViewById(R.id.list1);
        mListView.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, tooldisplay));
    }
}

1 Ответ

0 голосов
/ 13 февраля 2012

Я нашел источник моей проблемы после гораздо большего количества поиска в Google.Размещение ответа для тех, кто может прийти позже с той же проблемой.

Я использовал не тот конструктор.

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

    mListView.setAdapter(new ArrayAdapter<String>(this, 
            android.R.layout.simple_list_item_1, tooldisplay)); 

должно быть:

    ListView mListView = (ListView)findViewById(R.id.list1);          
    mListView.setAdapter(new ArrayAdapter<String>(this,          
            R.layout.listlayout, R.id.ListItem1, tooldisplay));          
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...