0

我想允许我的 ListView 在其宽度上被包装到它的内容并使其与父中心对齐。

这是一个普通的 ListView 给我的

这几乎是我想要实现的,只是我希望 ListView 通过 ListView 中最长的测试来包装。目前这是通过声明 dp 来实现的,如果可能的话,我想避免

第一张图片的一些代码:

<ListView
            android:id="@+id/lst_test"
            android:layout_width="0dip"
            android:layout_weight="1"
            android:layout_height="wrap_content" >
        </ListView>

第二张图片的一些代码:

<ListView
     android:id="@+id/lst_test"
     android:layout_width="200dp"
     android:layout_height="wrap_content" >
</ListView>

我是否必须为此使用自定义适配器,或者我可以坚持使用当前的适配器?如果我需要使用自定义适配器,我该怎么做?

4

1 回答 1

1

您不需要创建自定义适配器。这是一个可以帮助你的例子。

public class MainActivity extends Activity {

    HashMap <String, CheckBox> options = new HashMap<String, CheckBox>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView list_view = (ListView) findViewById(R.id.listView1);

        ArrayList<String> str = new ArrayList<String>();
        for (int i = 0; i < 10; i++) {
            str.add("Example " + i);
        }
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_layout, R.id.textView1, str);
        list_view.setAdapter(adapter);
    }
}

上面我创建了一个活动,我在其中使用 ArrayAdapter 获取列表视图和设置数据。

我创建了两个布局:

第一个布局:包含列表视图。第二个布局:包含需要显示的文本视图。

在 Listview 中心对齐数据的主要逻辑是您需要将 textview 的重力设置为中心。

您可以根据需要管理第二个布局。

这是我的第一个 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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

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

</RelativeLayout>

这是我的第二个布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:gravity="center"
        android:text="TextView" />

</RelativeLayout>

如果您仍然面临任何问题,那么您可以询问。如果您需要更大的灵活性,那么您可以通过继承 ArrayAdapter 类来创建自定义适配器。

这是自定义适配器的示例:如何在填充的列表视图中为每个联系人链接一个复选框?

希望它会帮助你。

于 2013-10-09T10:45:26.590 回答