I have a ListView that just contains a CheckedTextView.
I have a very simple CursorAdapter that populates CheckedTextViews.
When I click on an item, I can see that I am responding to the correct
row, store the value in my model and the CheckedText gets checked.

However, when I scroll down and then back up again, while I see that
the model contains the correct value (in #bindView), calling
#setChecked on the CheckedTextView has no effect. Ie All items are
unchecked.

Its gotta be something simple, but I can't see it. Any ideas?



public final class SimpleAdapter extends CursorAdapter {

    private static final String TAG = "SimpleAdapter";

    private final LayoutInflater inflater;
    private final RowModel rowModel = new RowModel();

    public SimpleAdapter(Activity context, MyCursor cursor) {
        super(context, cursor, true);
        inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup
parent) {
        final CheckedTextView checkedText = (CheckedTextView)
inflater.inflate(android.R.layout.simple_list_item_multiple_choice,
parent, false);

        final MyCursor myCursor = (MyCursor) cursor;
        checkedText.setText(myCursor.getDescription());

        final Long rowId = rawContactsCursor.getRowId();
        checkedText.setChecked(rowModel.isSelected(rowId));
        Log.v(TAG, "rowId=" + rowId + " settingChecked=" +
rowModel.isSelected(rowId));

        checkedText.setTag(rowId);

        checkedText.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) { // Toggle whether the Row
is selected or not.
                final Long id = (Long) view.getTag();
                Log.v(TAG, "toggling rowId=" + rowId);
                final boolean checked = rowModel.toggleSelected(id);
                final CheckedTextView checkedTextView =
(CheckedTextView) view;
                checkedTextView.setChecked(checked);
            }
        });

        return checkedText;
    }

    @Override
    public void bindView(View view, Context context, Cursor cursor) {
        final CheckedTextView checkedText = (CheckedTextView) view;

        final MyCursor myCursor = (MyCursor) cursor;
        checkedText.setText(myCursor.getDescription());

        final Long rowId = rawContactsCursor.getRowId();
        checkedText.setChecked(rowModel.isSelected(rowId));
        Log.v(TAG, "rowId=" + rowId + " settingChecked=" +
rowModel.isSelected(rowId));

        checkedText.setTag(rowId);
    }
}

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to