与此处的其他几篇文章一样,我正在尝试创建一个ListView,其中包含每行的CheckBox,并使用SQLite数据库来存储选择的当前状态.
从http://appfulcrum.com/?p=351上的示例开始,我没有完全按原样工作,我创建了一个创建数据库的简单应用程序,用20个项目填充它,并显示列表.
它成功检索状态并存储选择的状态.
但是,如果我更改它,它无法正确显示CheckBox状态,滚动到列表的另一端,然后向后滚动.例如,如果我选择第一个CheckBox,滚动到底部,然后返回到顶部,则不再设置CheckBox.这是在Android 2.1三星手机上运行.
如果我返回主屏幕,返回列表,CheckBox 已正确设置,因此数据库确实已更新.
该示例扩展了SimpleCursorAdapter,并且getView()根据表中选择列的值,根据需要调用setChecked()为true或false.
以下是所有来源.
我当然很感激被告知,"呃,这是你的问题......"
CustomListViewDB.java
// src/CustomListViewDB.java
package com.appfulcrum.blog.examples.listviewcustomdb;
import android.app.ListActivity;
import android.database.Cursor;
import android.database.SQLException;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
public class CustomListViewDB extends ListActivity {
private ListView mainListView = null;
CustomSqlCursorAdapter adapter = null;
private SqlHelper dbHelper = null;
private Cursor currentCursor = null;
private ListView listView = null;
/** Called when the activity is first created. */
@Override
public void …
Run Code Online (Sandbox Code Playgroud)