我有一个:
public class MyList extends ListActivity {
SimpleAdapter simpleAdapter;
绑定到ListView
由ViewBinder
:
simpleAdapter = new SimpleAdapter(this, getData(path),
R.layout.menu_row, new String[] {
..., "checked" }, new int[] {..., R.id.checkBox1 });
SimpleAdapter.ViewBinder viewBinder = new SimpleAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view, Object data,
String textRepresentation) {
if (view.getId() == R.id.checkBox1) {
CheckBox checkBox = (CheckBox) view;
checkBox.setChecked(Boolean.parseBoolean((String) data));
我的xml看起来像这样,clickable
和focusable
有助于将行视为一行。
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:clickable="false"
android:focusableInTouchMode="false"
/>
我也有:
protected void onListItemClick(ListView l, View v, int position, long id) {
与click事件交互。到目前为止,这项工作很好,我的问题是
当我点击一行时,CheckBox
不会改变其视觉状态。我该怎么办?
答案 0 :(得分:1)
我认为您要查看的内容是CheckedTextView
,其中显示一个复选框,单击列表项时,复选框会更改
答案 1 :(得分:0)
将button.setChecked(true)
放在onListItemClick上(或使用setChecked来回切换代码)。
修改
误解了你的问题。您是否告诉适配器数据集已更改?