带有复选框的Listview可以节省staes

时间:2011-07-14 10:22:55

标签: android listview checkbox

我的应用程序包含2个活动。第一个活动包含TextView,如果您点击它,则转到包含ListView和按钮Done的第二个活动。 ListView包含TextViews CheckBox。如果单击按钮,则完成活动并返回所选文本项。如果您返回列表视图,则会恢复所选复选框。

代码将不胜感激。

2 个答案:

答案 0 :(得分:2)

首先,我建议您使用CheckedTextView控件而不是CheckBox& TextView中。 CheckedTextView作为复选框和textview的组合,易于处理和实现。

其次,你应该有一个与ListView no一样的布尔的ArrayList。的项目。然后,您可以在ListView的OnListItemClick函数中相应地设置ArrayList项。在代码中的任何时间和任何地方,您都可以获得ListView选择的参考。它简单而有效。

以下是OnListItemClick代码示例:

@Override
    protected void onListItemClick(ListView l, View v, int position, long id) 
    {       
        arrCheckBox.set(position, !arrCheckBox.get(position));
        CheckedTextView ctvListItem = (CheckedTextView)v.findViewById(R.id.ctvCustomLVRowID);
        ctvListItem.setChecked(arrCheckBox.get(position));
    }  

这里arrCheckBox是一个布尔型ArrayList,它保留了我们选择的记录,这个数组的大小与no相同。 ListItems。我希望你现在能搞清楚。

答案 1 :(得分:1)

XML文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/LinearLayout01"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <ListView android:id="@+id/ListView01" android:layout_height="wrap_content"
        android:layout_width="fill_parent"></ListView>
</LinearLayout>

Java代码:

public class ListViewMultipleChoiceExample extends Activity {
    private ListView lView;
    private String lv_items[] = { "Android", "iPhone", "BlackBerry",
            "AndroidPeople", "J2ME", "Listview", "ArrayAdapter", "ListItem",
            "Us", "UK", "India" };

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
        lView = (ListView) findViewById(R.id.ListView01);
        // Set option as Multiple Choice. So that user can able to select more
        // the one option from list
        lView.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_multiple_choice, lv_items));
        lView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    }
}

screenshot