过滤/搜索预先填充的SQLite数据的ListView可以通过以下步骤实现:
下面是一个示例代码,演示了如何实现上述步骤:
// 创建SQLite数据库并填充数据
SQLiteOpenHelper dbHelper = new SQLiteOpenHelper(context, "mydb", null, 1) {
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS mytable (id INTEGER PRIMARY KEY, name TEXT)");
db.execSQL("INSERT INTO mytable (name) VALUES ('John')");
db.execSQL("INSERT INTO mytable (name) VALUES ('Alice')");
db.execSQL("INSERT INTO mytable (name) VALUES ('Bob')");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 升级数据库时的操作
}
};
// 创建ListView并适配数据
ListView listView = findViewById(R.id.listView);
Cursor cursor = dbHelper.getReadableDatabase().rawQuery("SELECT * FROM mytable", null);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor, new String[]{"name"}, new int[]{android.R.id.text1});
listView.setAdapter(adapter);
// 实现过滤/搜索功能
EditText searchEditText = findViewById(R.id.searchEditText);
searchEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
adapter.getFilter().filter(s);
}
@Override
public void afterTextChanged(Editable s) {
}
});
在上述代码中,我们使用了一个简单的CursorAdapter来适配数据库中的数据,并通过EditText的文本变化事件来触发过滤逻辑。最后,调用适配器的getFilter().filter(s)方法来过滤数据,并更新ListView的显示。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云