Я только начал с разработки Android и люблю его до сих пор. Чтобы получить некоторый опыт, я пишу небольшое приложение todo. В моей базе данных у меня есть состояние для элемента todo, представленного как int. Я использую флажок в представлении списка для представления этого состояния. Чтобы привязать данные к , я использую подкласс SimpleCursorAdapter. Я добавляю onClickListener к флажку, который обновляет состояние в базе данных для используемого элемента списка. Проблема заключается в том, если я использую следующий код, список завинчивается на дисплее (многие детали будут проверены):Android SimpleCursorAdapter и обновление базы данных
@Override
public View getView(final int pos, View inView, ViewGroup parent) {
View view = inView;
if (view == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.toodoolist_item, null);
}
cursor.moveToPosition(pos);
...
checkBox.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int state = 0;
if (checkBox.isChecked()) {
titleView.setPaintFlags(titleView.getPaintFlags()
| Paint.STRIKE_THRU_TEXT_FLAG);
titleView.setEnabled(false);
state = 1;
} else {
titleView.setPaintFlags(titleView.getPaintFlags()
^Paint.STRIKE_THRU_TEXT_FLAG);
titleView.setEnabled(true);
}
ContentValues values = new ContentValues();
values.put(TooDooTable.STATE, state);
context.getContentResolver()
.update(ContentUris.withAppendedId(
TooDooTable.CONTENT_URI, id), values, null, null);
cursor.requery();
}
}
Мой текущий обходной путь заключается в использовании Inflater каждый раз, даже если в inView не является нулевым:
@Override
public View getView(final int pos, View inView, ViewGroup parent) {
View view = inView;
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.toodoolist_item, null);
...
Это работает, но я не понимаю, зачем мне это делать.
Что было бы лучше всего обновить базу данных в CurserAdapter и получить изменения, отраженные сразу же в представлении?
Благодаря
Kai