我希望允许我的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>
我是否必须使用自定义适配器,或者我可以坚持使用当前适配器?如果我需要使用自定义适配器,我该怎么做呢?
答案 0 :(得分: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和设置数据。
我创建了两个布局:
第一个布局:包含listview。 第二种布局:包含需要显示的文本视图。
在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类来创建自定义适配器。
以下是自定义适配器的示例:How do I link a checkbox for every contact in populated listview?
希望它会对你有所帮助。