1

我是android编程的新手

我的活动中有两个列表视图和两个按钮。如果我按下第一个按钮,将创建一个列表视图并在活动中显示,当单击第二个按钮时,将创建第二个列表视图并关闭第一个。

谁能建议我如何做到这一点?

提前致谢..

4

5 回答 5

1

简单的选择是在运行时单击按钮时更改列表上的列表适配器。

喜欢

on first button click

    list.setAdapter(adapter1);

on second button click 

    list.setAdapter(adapter2);

并且您也可以使用选项卡来显示两个列表请参阅此示例

http://joshclemm.com/blog/?p=59

http://www.edumobile.org/android/android-beginner-tutorials/tab-control/

于 2012-08-06T06:33:17.267 回答
0

如果您想在两个不同的按钮上显示两个列表,您可以只使用一个带有两个不同 ArrayAdapter 的列表并更改列表。

示例代码...

将此代码放入您的 xml 文件中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="List1" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/button1"
        android:text="List2" />

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/button1" >
    </ListView>

</RelativeLayout>

将此代码放入您的活动中

public class MainActivity extends Activity {

    ListView listView1;
    Button list1Button,list2Button;

    ArrayAdapter<String> adapter1,adapter2;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listView1 = (ListView)findViewById(R.id.listView1);

        list1Button = (Button)findViewById(R.id.button1);
        list2Button = (Button)findViewById(R.id.button2);

       String[] names1 = {"Android","Iphone","Titenium"};
       String[] names2 = {"java",".net","php"};

       adapter1 = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,names1);
       adapter2 = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,names2);

       listView1.setAdapter(adapter1);

       list1Button.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            listView1.setAdapter(null);

            listView1.setAdapter(adapter1);

        }
    });

       list2Button.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            listView1.setAdapter(null);
            listView1.setAdapter(adapter2);
        }
    });

    }




}

我希望这可以帮助你..

于 2012-08-07T06:56:01.597 回答
0

听起来很像 Tab 界面。所以这应该很容易

http://developer.android.com/reference/android/app/ActionBar.html#newTab ()

那里的文档有一个使用片段的完整实现示例。您可能以前没有使用过片段,但不要害怕,它们基本上只是视图。在尝试让列表视图飞来飞去之前让示例工作。

希望这可以帮助!

于 2012-08-06T06:25:54.390 回答
0

您应该考虑使用片段。在您的主要活动中使用框架布局。然后根据用户选择动态加载片段之一。

case (R.id.button1):
FragmentTransaction fragmentTransaction = fragmentManager
                    .beginTransaction();
fragmentTransaction.replace(R.id.fragment, frag1);
fragmentTransaction.commit();
break;

http://developer.android.com/guide/components/fragments.html && http://android-developers.blogspot.com/2011/02/android-30-fragments-api.html

于 2012-08-06T06:34:44.797 回答
0

尝试这个,

当我按下第二个按钮时

       firstlistView.setVisibility(1);(1->Invisible state)first listview goes invisible state
       secondlistview.setVisiblity(0);(0->Visible)Ur second listview shown by this code
于 2012-08-06T06:36:59.437 回答