Java 如何包括列表和其他UI元素?(安卓)

Java 如何包括列表和其他UI元素?(安卓),java,android,xml,android-layout,listactivity,Java,Android,Xml,Android Layout,Listactivity,我是android开发的新手,所以如果这是一个简单的问题,我为任何不正确的术语道歉 但我需要知道的是,如何在其他UI元素(如TextView、ImageView元素等)旁边包含一个列表 到目前为止,我所能实现的只是一个单独的列表活动,为此我一直使用ListActivity类类型 我的列表活动: import android.app.ListActivity; import android.os.Bundle; import android.widget.ArrayAdapter; public

我是android开发的新手,所以如果这是一个简单的问题,我为任何不正确的术语道歉

但我需要知道的是,如何在其他UI元素(如TextView、ImageView元素等)旁边包含一个列表

到目前为止,我所能实现的只是一个单独的列表活动,为此我一直使用ListActivity类类型

我的列表活动:

import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;

public class ListViewExample extends ListActivity 
{
    String[] exampleList = {
            "Item 1",
            "Item 2",
            "Item 3"
            //etc etc
    };

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

        setListAdapter(new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, exampleList));
    }
}
但是使用“startActivity()”函数,这似乎只是切换到该活动,而不是将其“包含”到当前活动,这意味着“R.layout.main”(在调用“startActivity()”之前定义)中的任何元素都不会显示

我的主要活动中是否包含此活动? 还是有更好的方法列出清单

(我的目标最终将是使列表数组动态化,正如我所说的那样,以防它影响到任何建议的解决方案)


感谢您的帮助(:

使用startActivity启动ListView示例启动一个全新的活动(使用全新的视图)并将其放在堆栈顶部。单击“上一步”按钮时,将显示您的主要活动。请参阅链接以了解有关活动生命周期的更多信息

听起来你想做的是在listview旁边定义一些其他UI元素。我不知道你是否可以在侧面这样做,但我知道你可以在listview的顶部或底部包含按钮/文本视图。请参阅文章,这是如何在listview下方放置按钮的一个很好的示例

编辑:例如(取自第二个链接),您可以执行以下操作:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent">

    <Button android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:id="@+id/testbutton"
        android:text="@string/hello" android:layout_alignParentBottom="true" />

    <ListView android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:id="@+id/list"
        android:layout_alignParentTop="true" android:layout_above="@id/testbutton" />

</RelativeLayout>

现在,如果您愿意,您还可以将该按钮放在底部,或者在顶部包含一个文本框,在底部包含一个按钮

是的,正如Espiandev所说,您希望您的主要活动扩展活动。然后在XML中,您将拥有上述内容。您将listview绑定到的方式是

ListView lv=(ListView)findViewById(R.id.list)

然后你可以绑定到它:


lv.setAdapter(…)

使用startActivity启动ListViewExample启动一个全新的活动(使用全新的视图)并将其放在堆栈顶部。单击“上一步”按钮时,将显示主要活动。有关活动生命周期的详细信息,请参阅链接

听起来你想做的是在listview旁边定义一些其他UI元素。我不知道你是否可以在侧面这样做,但我知道你可以在listview的顶部或底部包含按钮/文本视图。请参阅文章,这是如何在listview下方放置按钮的一个很好的示例

编辑:例如(取自第二个链接),您可以执行以下操作:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent">

    <Button android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:id="@+id/testbutton"
        android:text="@string/hello" android:layout_alignParentBottom="true" />

    <ListView android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:id="@+id/list"
        android:layout_alignParentTop="true" android:layout_above="@id/testbutton" />

</RelativeLayout>

现在,如果您愿意,您还可以将该按钮放在底部,或者在顶部包含一个文本框,在底部包含一个按钮

是的,正如Espiandev所说,您希望您的主要活动扩展活动。然后在XML中,您将拥有上述内容。您将listview绑定到的方式是

ListView lv=(ListView)findViewById(R.id.list)

然后你可以绑定到它:


lv.setAdapter(…)

另一个答案可能更具可扩展性,它的替代方法是简单地使
ListViewExample
扩展一个基本的
活动
。然后,在
onCreate()
方法中,使用
setAdapter()检索
ListView
。例如,如果您的
ListView
获得了id listview1:

public class ListViewExample extends Activity {
    String[] exampleList = {
            "Item 1",
            "Item 2",
            "Item 3"
            //etc etc
    };

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

        // Get an instance of your listview in code
        ListView listview = (ListView) findViewById(R.id.listview1);

        // Set the listview's adapter
        listview.setAdapter(new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, exampleList));
    }
}
公共类ListViewExample扩展活动{
字符串[]示例列表={
“项目1”,
“项目2”,
“项目3”
//等等
};
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.listview);
//在代码中获取listview的实例
ListView ListView=(ListView)findViewById(R.id.listview1);
//设置listview的适配器
setAdapter(新的ArrayAdapter(此,
android.R.layout.simple_list_item_1,exampleList));
}
}

这将使您能够灵活地使用一个布局,而不仅仅是一个列表视图

另一个答案可能更具可伸缩性,它的替代方法是简单地使
列表视图示例
扩展一个基本的
活动
方法,通过使用检索
ListView
,然后在此上使用
setAdapter()
。例如,如果您的
ListView
被赋予了id listview1:

public class ListViewExample extends Activity {
    String[] exampleList = {
            "Item 1",
            "Item 2",
            "Item 3"
            //etc etc
    };

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

        // Get an instance of your listview in code
        ListView listview = (ListView) findViewById(R.id.listview1);

        // Set the listview's adapter
        listview.setAdapter(new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, exampleList));
    }
}
公共类ListViewExample扩展活动{
字符串[]示例列表={
“项目1”,
“项目2”,
“项目3”
//等等
};
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.listview);
//在代码中获取listview的实例
ListView ListView=(ListView)findViewById(R.id.listview1);
//设置listview的适配器
setAdapter(新的ArrayAdapter(此,
android.R.layout.simple_list_item_1,exampleList));
}
}

这将使您可以灵活地使用一个布局,而不仅仅是一个listview

我想您的意思是listview示例扩展活动而不是ListActivity这行是“listview listview=(listview)findViewById(R.id.listview1);”在R.layout.listview中引用列表的布局/样式吗?如果是,请在更改id后执行(listview1)为了匹配我正在使用的一个,我得到了一个强制关闭错误。你知道为什么吗?谢谢(:啊,它现在工作了,我直接复制了代码,它工作了,所以我一定在某个地方有一个小错误,再次感谢(:是的,R.id.listview1指的是listview本身的id,而不是布局。只需放置一个