我需要创建显示数据库sql元素的列表视图的帮助。
首先创建一个具有3个字段的ID为Text1,Text2 and Text3
的TextView的小型xml布局
和我的活动中的一个列表视图。
将接口中的列分组后
public interface TableRegistry extends BaseColumns{
String TABLE_NAME = "Registry";
String TYPE = "Type";
String DATE = "Date";
String STATUS = "Status";
String NUMBER = "Number";
String MESSAGE = "Message";
String OTHER = "Other";
String[] COLUMNS = new String[]
{ _ID, TYPE, DATE, STATUS, NUMBER, MESSAGE, OTHER };
}
在我创建数据库类之后。
public class APdatabaseClass extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "APdatabase";
private static final int DATABASE_VERSION = 1;
public APdatabaseClass(Context context) {
super(context, DATABASE_NAME , null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "CREATE TABLE {0} ({1} INTEGER PRIMARY KEY AUTOINCREMENT," +
" {2} TEXT NOT NULL,{3} TEXT NOT NULL,{4} TEXT NOT NULL,{5} TEXT NOT NULL,{6} TEXT NOT NULL, {7} TEXT NOT NULL);";
db.execSQL(MessageFormat.format(sql, TableRegistry.TABLE_NAME, TableRegistry._ID,
TableRegistry.TYPE, TableRegistry.DATE, TableRegistry.STATUS, TableRegistry.NUMBER, TableRegistry.MESSAGE, TableRegistry.OTHER));
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS " + TableRegistry.TABLE_NAME);
// Create tables again
onCreate(db);
}
现在,如何使用SimpleCursorAdapter或其他方法将数据库连接到活动中的listview?我需要使用以下命令填充3个TextView字段:
TableRegistry.TYPE, TableRegistry.DATE, TableRegistry.STATUS.
提前致谢!
最佳答案
看来您将需要一些额外的工作。这是我通常的做法:
在数据库助手中首先创建方法以获取所需的信息:
public Cursor fetchListData() {
return mDb.query(TableRegistry.TABLE_NAME, new String[] { TableRegistry._ID,
TableRegistry.TYPE, TableRegistry.DATE, TableRegistry.STATUS }, null,null,
null, null, null);
}
然后在任何要创建列表的类中:
APdatabaseClass mDbHelper = new APdatabaseClass(getActivity());
mDbHelper.open();
Cursor c = fetchListData();
getActivity().startManagingCursor(c);
String[] from = new String[] { TableRegistry.TYPE, TableRegistry.DATE, TableRegistry.STATUS };
int[] to = new int[] { R.id.Text1, R.id.Text2, R.id.Text3 };
SimpleCursorAdapter data = new SimpleCursorAdapter(getActivity(), R.layout.yourlistlayout, c, from, to);
setListAdapter(data);
请注意,这假设您正在使用ListFragment或ListActivity。如果不是,设置适配器的方式将稍有不同。
希望这可以帮助!
关于java - Android:ListView上的Sqlite,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10116614/