Android:如何为每行创建包含不同内容的列表视图屏幕

时间:2010-10-18 19:40:20

标签: android listview varying

我正在寻找类似于声音设置屏幕的列表视图屏幕(在内置的设置应用中,见下图),即我想要一些行有文本+复选框,其他行有文字+“弹出“按钮,某些行应该只有文本等。

实现这一目标的最佳方法是什么?

alt text

2 个答案:

答案 0 :(得分:2)

正如Falmarri所指出,这不是ListView而是PreferenceActivity

如果您无法使用PreferenceActivity,那么制作不同项目列表的最简单方法就是在ScrollView围绕LinearLayout { {1}}。您可以在此处详细了解:http://developer.android.com/reference/android/widget/ScrollView.html

以下是一个非常简单的例子:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
            <TextView
                android:text="Some text label here" 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
            />
            <Button
                android:text="A button to click"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
            />
        </RelativeLayout>
        <EditText
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:hint="Perhaps an input field here"
        />
        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
            <TextView
                android:text="Some more text, and a check box" 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
            />
            <CheckBox
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
            />
        </RelativeLayout>
    </LinearLayout>
</ScrollView>

现在这个列表中没有足够的项目可以滚动,但是如果你不断添加更多的元素,它会在它变得比屏幕大的时候开始滚动。

答案 1 :(得分:1)

这不是列表视图,而是PreferenceActivity。看看PrefereceActivity类

http://developer.android.com/reference/android/preference/PreferenceActivity.html

如果你真的想为列表视图中的每一行设置不同的视图(这是非常有效的),你必须创建自己的扩展BaseAdapter的类。在getView()方法中,只需返回要显示的视图即可。网上有很多例子。