(Pre)使用'simple_list_item_checked'选择ListActivity中的复选框

时间:2011-09-22 17:45:57

标签: android checkbox listactivity

我正在将 ListActivity 类与 simple_list_item_checked -layout结合使用,该实现复选框实现简单列表项。一切正常 - 单击添加的项目调用onListItemClick(),我可以通过'View v'参数检查/取消选中相应的条目复选框。

然而,我无法弄清楚的是,如何(预先)选择没有任何用户交互的复选框?

到目前为止最小的工作代码片段显示了我的意图:

package org.test;

import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.CheckedTextView;
import android.widget.ListView;

public class TestActivity extends ListActivity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ArrayAdapter<String> list_elems = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_checked);
        list_elems.add("foobar");
        //TODO: check added entry labeled "foobar"
        setListAdapter(list_elems);
    }

    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
           CheckedTextView check = (CheckedTextView)v;
        check.setChecked(!check.isChecked());
    }
}

提前多多感谢!

回到名单Daten

2 个答案:

答案 0 :(得分:2)

这对我有用:

您必须将基础ListView的choicemode设置为单个或多个。

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ArrayAdapter<String> list_elems = new ArrayAdapter<String>(this, Android.R.layout.simple_list_item_checked);
        list_elems.add("foobar");
        //TODO: check added entry labeled "foobar"
        setListAdapter(list_elems);

        ListView lv = getListView();

        lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

        lv.setItemChecked(0, true);
    }

答案 1 :(得分:0)

使用SimpleListAdapter作为ListAdctivity的ListAdapter。使用两列(一列用于字符串,另一列用于检查值),系统应自行处理。这是一个很好的example