首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >左侧Listview,右侧tabhost,屏幕分享比例20:80

左侧Listview,右侧tabhost,屏幕分享比例20:80
EN

Stack Overflow用户
提问于 2013-01-14 15:09:11
回答 1查看 325关注 0票数 5

嗨,我已经在Activity中添加了两个TabHost,它工作得很好。我用ListView添加了另一个XML文件,并在我使用TabhostActivity中调用它。正如预期的那样,它给出了错误,但我尝试了很多次,但都不能解决它。谁能告诉我如何在一个Activity中同时管理ListViewTabHost?我没有放代码,因为它主要来自教程。任何帮助都将不胜感激。谢谢。主要错误是“你的内容必须有一个id属性为‘android.R.id.tabhost’的TabHost

EN

回答 1

Stack Overflow用户

发布于 2014-04-03 18:25:33

具有Tabs的示例活动和具有选中项目的ListViews:

我在下面发布了一个包含一个TabHost的示例活动,其中有3个Tabs和两个ListView,每个tab1tab3中都有一个。我使用ArrayList来初始化我的ArrayAdapter,我可以通过它链接我的ListView。然后,在通过其ArrayList tab3List进行设置后,我将项目添加到tab3ListView。请注意,tab3ListView的项有一个相应的复选框。请注意,现在有些人更喜欢ActionBar.Tabs而不是TabHost,但我发现这种方式更简单。

XML文件:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TabHost
    android:id="@+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" >

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="70dp"
            android:layout_marginBottom="-4dp"
            android:layout_weight="0" >
        </TabWidget>
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:padding="0dp"
            android:layout_weight="1">
            <LinearLayout
                android:id="@+id/tab1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">
            <ListView 
                android:id="@+id/tab1List"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:fastScrollEnabled="true"></ListView>
            </LinearLayout>

            <LinearLayout
                android:id="@+id/tab2"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical" >
           <EditText 
                android:id="@+id/tab2Edit1"
                android:layout_width="fill_parent"
                android:layout_height="40dp"
                android:hint="Enter text here"/>
            </LinearLayout>

            <LinearLayout
                android:id="@+id/tab3"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="horizontal" >
           <ListView 
                android:id="@+id/tab3List"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:fastScrollEnabled="true"></ListView>
            </LinearLayout>
        </FrameLayout>
    </LinearLayout>
</TabHost>
</LinearLayout>

主要活动:

代码语言:javascript
复制
public class MainActivity extends Activity{

// TabHost
TabHost th;
LinearLayout tab1, tab2, tab3;

// ListView
ListView tab1ListView, tab3ListView;

// String list
String stringList[] = {"Paris", "Washington", "Amsterdam", "London", "Bale", "Madrid",
        "Zurich", "Munich", "Berlin", "Milan", "Rome", "Turin", "Lyon", "Marseille"};

// Adapters
ArrayList<String> tab1List, tab3List;
ArrayAdapter<String> tab1Adapter, tab3Adapter;

// Others
EditText tab2Edit1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // Initialize Layout
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // Initialize Tabs
    th = (TabHost) findViewById(R.id.tabhost);
    th.setup();
    // Tab1
    TabSpec spec1 = th.newTabSpec("tag1");
    spec1.setContent(R.id.tab1);
    spec1.setIndicator("Tab 1");
    th.addTab(spec1);
    // Tab2
    TabSpec spec2 = th.newTabSpec("tag2");
    spec2.setContent(R.id.tab2);
    spec2.setIndicator("Tab 2");
    th.addTab(spec2);
    // Tab3
    TabSpec spec3 = th.newTabSpec("tag3");
    spec3.setContent(R.id.tab3);
    spec3.setIndicator("Tab 3");
    th.addTab(spec3);

    //Initialize Adapter and ListView from Tab1
    tab1ListView = (ListView) findViewById(R.id.tab1List);
    tab2Edit1 = (EditText) findViewById(R.id.tab2Edit1);
    tab1List    = new ArrayList<String>(Arrays.asList(stringList));
    tab1Adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, tab1List);
    tab1ListView.setAdapter(tab1Adapter);

    //Initialize Adapter and ListView from Tab3
    tab3ListView = (ListView) findViewById(R.id.tab3List);
    tab3List    = new ArrayList<String>(Arrays.asList(stringList));
    tab3Adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, tab3List);
    tab3ListView.setAdapter(tab3Adapter);
    tab3ListView.setFocusable(false);
    tab3ListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

    // Modify ListView: modify ArrayList and call notifyDataSetChanged() from corresponding adapter
    tab3List.add(0,"New item at location 0");
    tab3List.add(3,"New item at location 3");
    tab3List.add("New item at location end");
    tab3Adapter.notifyDataSetChanged();

    tab3ListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // Set what happenss when you check or uncheck an item here 
        }

    });
} 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14314476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档