我要完成的是拥有一个可滚动的ListView,其中包含每个项目的RelativeLayout。每个RelativeLayout都包含一个CheckBox和一个EditText。我的ListView的ArrayAdapter包含RelativeLayout类型。当我创建这个ListView时,每个项目都显示为布局的toString()而不是布局本身。我应该怎么做才能做到这一点?
答案 0 :(得分:1)
初始化您的列表视图
ListView listView = (ListView) findViewById(R.id.list_view);
为listview创建适配器布局,如下所示(customview.xml)
<?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"
android:orientation="horizontal" >
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="10dp" />
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CheckBox" />
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
>
<requestFocus />
</EditText>
</<RelativeLayout >
创建AdapterClass并扩展BaseAdapter
public class CustomAdapter extends BaseAdapter {
@Override
public int getCount() {
...
}
@Override
public Object getItem(int position) {
return ....;
}
@Override
public long getItemId(int position) {
return ...;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = getLayoutInflater();
View row;
row = inflater.inflate(R.layout.customview, parent, false);
TextView name = (TextView) row.findViewById(R.id.name);
CheckBOx check = (CheckBOx) row.findViewById(R.id.checkBox1);
EditText edit = (EditText) row.findViewById(R.id.editText1);
name.setText("Name");
edit.setText("Address");
return row;
}
最后将适配器设置为ListView
listView.setAdapter(new CustomAdapter(contacts) );
答案 1 :(得分:0)
创建自己的ArrayAdapter
子类并在getView()中构建RelativeLayout
您将ArrayAdapter设置为的类型用于填充不构建视图的内容。要使用您想要的非标准视图,您必须覆盖BaseAdapter
你可以在这里看到一个例子: http://www.vogella.com/articles/AndroidListView/article.html#adapterown