我使用adapter = new SimpleCursorAdapter(this,android.R.layout.simple_list_item_multiple_choice,cur,cols,views)创建一个多选控件, 但是我对多选控件中textview的样式不满意,所以我必须使用以下代码来创建多选控件的新布局。 它运作良好,但我认为这不是一个好方法,有没有好的代码?谢谢!
adapter = new SimpleCursorAdapter(this, R.layout.mysimple_list_item_multiple_choice, cur,cols,views);
lv.setAdapter(adapter);
lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
mysimple_list_item_multiple_choice.xml
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:textAppearance="?android:attr/textAppearanceMedium"
android:gravity="center_vertical"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
android:paddingLeft="6dip"
android:paddingRight="6dip"
android:ellipsize="end"
android:singleLine="true"
/>
答案 0 :(得分:3)
使用<include>
。
创建新的XML布局。
<include android:id=”@+android:id/simple_list_item_multiple_choice”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
layout=”@layout/title”/>
您可以通过在标记中指定它们来覆盖所包含布局的根视图的所有布局参数(任何android:layout_*
属性)。
答案 1 :(得分:0)
您需要扩展BaseAdapter以创建自定义Adapter.With自定义适配器listview的每一行都使用xml布局,因此您可以为行创建自定义布局。
自定义适配器的示例代码:
public class ImageAdapter extends BaseAdapter {
private Context context;
private final String[] StrValues;
public ImageAdapter(Context context, String[] StrValues) {
this.context = context;
this.StrValues = StrValues;
}
// getView that displays the data at the specified position in the data set.
public View getView(int position, View convertView, ViewGroup parent) {
// create a new LayoutInflater
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view;
view = null;
convertView = null;// avoids recycling of list view
if (convertView == null) {
view = new View(context);
// inflating grid view item
view = inflater.inflate(R.layout.list_view_item, null);
// set value into textview
TextView textView = (TextView) view
.findViewById(R.id.list_item_label);
textView.setText(StrValues[position]);
}
return view;
}
// Total number of items contained within the adapter
@Override
public int getCount() {
return StrValues.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
}
设置适配器:
listView = (ListView) findViewById(R.id.listView1);
// setting adapter on listview
listView.setAdapter(new ImageAdapter(this, StrValues));
示例链接:
R.layout.list_view_item是列表视图的自定义xml,您可以在其中添加所需的视图。