5

我使用adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_multiple_choice, cur, cols, views) 创建了一个多选控件,但是我对多选控件中textview的样式不满意,所以我必须使用以下代码来创建多选控件的新布局。效果不错,但是我觉得不是什么好办法,有什么好的代码吗?谢谢!

适配器=新的SimpleCursorAdapter(这个,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"

/>
4

2 回答 2

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_*包含布局的根视图的所有布局参数(任何属性)。

于 2013-06-05T07:08:43.050 回答
1

您需要扩展BaseAdapter以创建自定义 Adapter.With 自定义适配器 listview 的每一行都使用 xml 布局,因此您可以为 rows 创建自定义布局。

自定义适配器的示例代码:

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));

示例链接:

示例 1 示例 2

R.layout.list_view_item 是您的列表视图的自定义 xml,您可以在其中添加所需的视图。

于 2013-06-05T06:41:06.033 回答