Android 当我有数据库时在listview中搜索

Android 当我有数据库时在listview中搜索,android,listview,Android,Listview,我有数据库,但我不知道如何在listview中使用搜索。我搜索internet,但我使用“字符串”,但我有一个数据库,所以我不能使用字符串。请帮助使用listview中的搜索从数据库加载数据,而不是将字符串产品[]={}设置为固定字符串 lv = (ListView) findViewById(R.id.listView); wordAdapter = new ArrayAdapter<Word>(this, R.layout.list_item,

我有数据库,但我不知道如何在listview中使用搜索。我搜索internet,但我使用“字符串”,但我有一个数据库,所以我不能使用字符串。请帮助使用listview中的搜索从数据库加载数据,而不是将字符串产品[]={}设置为固定字符串

  lv = (ListView) findViewById(R.id.listView);

    wordAdapter = new ArrayAdapter<Word>(this, R.layout.list_item,
            R.id.product_name);
     lv.setAdapter(adapter);
     dbHandler=new DatabaseHandler(getApplicationContext());


     inputSearch = (EditText) findViewById(R.id.inputSearch);
    inputSearch.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence cs, int arg1, int arg2,
                int arg3) {
            MainActivity.this.wordAdapter.getFilter().filter(cs);

        }


        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1,
                int arg2, int arg3) {
        //   TODO Auto-generated method stub

    }

    @Override
        public void afterTextChanged(Editable arg0) {
        //   TODO Auto-generated method stub


    }
    });  

    and this is database



private static final String DATABASE_NAME = "MYDB1",
        TABLE_TUVUNG="tuvung",
        KEY_ID = "id",
        KEY_THEM = "them",
        KEY_NGHIA = "nghia",
        KEY_LOAI = "loai",
        KEY_NGAY = "ngay";
public DatabaseHandler(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE " + TABLE_TUVUNG + "(" + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_THEM + " TEXT," + KEY_NGHIA + " TEXT," + KEY_LOAI + " TEXT," + KEY_NGAY + " TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_TUVUNG);

    onCreate(db);
}

public void createContact(Word contact) {
    SQLiteDatabase db = getWritableDatabase();

    ContentValues values = new ContentValues();

    values.put(KEY_THEM, contact.getthem());
    values.put(KEY_NGHIA, contact.getnghia());
    values.put(KEY_LOAI, contact.getloai());
    values.put(KEY_NGAY, contact.getngay());

    db.insert(TABLE_TUVUNG, null, values);
    db.close();
}



public Word getContact(int id) {
    SQLiteDatabase db = getReadableDatabase();

    Cursor cursor = db.query(TABLE_TUVUNG, new String[] { KEY_ID, KEY_THEM, KEY_NGHIA, KEY_LOAI,KEY_NGAY }, KEY_ID + "=?", new String[] { String.valueOf(id) }, null, null, null, null );

    if (cursor != null)
        cursor.moveToFirst();

    Word contact = new Word(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4));
    db.close();
    cursor.close();
    return contact;
}
public void deleteContact(Word contact) {
    SQLiteDatabase db =this.getWritableDatabase();
    db.delete(TABLE_TUVUNG, KEY_ID + "=?", new String[] { String.valueOf(contact.getid()) });
    db.close();
}
public void valuestact(Word contact){
    ContentValues values = new ContentValues();
     values.put(KEY_THEM, contact.getthem());
     values.put(KEY_NGHIA, contact.getnghia());
     values.put(KEY_LOAI, contact.getloai());
     values.put(KEY_NGAY, contact.getngay());
    return;
    }



public int getwordsCount() {

    SQLiteDatabase db =this.getReadableDatabase();
    Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_TUVUNG, null);
    int count = cursor.getCount();
    db.close();
    cursor.close();

    return count;
}
public int updateContact(Word contact) {
    SQLiteDatabase db = getWritableDatabase();

    ContentValues values = new ContentValues();

    values.put(KEY_THEM, contact.getthem());
    values.put(KEY_NGHIA, contact.getnghia());
    values.put(KEY_LOAI, contact.getloai());
    values.put(KEY_NGAY, contact.getngay());

    int rowsAffected = db.update(TABLE_TUVUNG, values, KEY_ID + "=?", new String[] { String.valueOf(contact.getid()) });
    db.close();

    return rowsAffected;
}

public List<Word> getAllwords() {
    List<Word> words = new ArrayList<Word>();

    SQLiteDatabase db = getWritableDatabase();
    Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_TUVUNG, null);

    if (cursor.moveToFirst()) {
        do {
            words.add(new Word(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4)));
        }
        while (cursor.moveToNext());
    }
    cursor.close();
    db.close();
    return words;
}
lv=(ListView)findViewById(R.id.ListView);
wordAdapter=new ArrayAdapter(此,R.layout.list_项,
R.id.产品名称);
低压设置适配器(适配器);
dbHandler=newdatabasehandler(getApplicationContext());
inputSearch=(EditText)findViewById(R.id.inputSearch);
inputSearch.addTextChangedListener(新的TextWatcher(){
@凌驾
public void onTextChanged(字符序列cs、int arg1、int arg2、,
int arg3){
MainActivity.this.wordAdapter.getFilter().filter(cs);
}
@凌驾
更改前的公共无效(字符序列arg0,int arg1,
整数arg2,整数arg3){
//TODO自动生成的方法存根
}
@凌驾
public void PostTextChanged(可编辑arg0){
//TODO自动生成的方法存根
}
});  
这是数据库
私有静态最终字符串数据库\u NAME=“MYDB1”,
表_TUVUNG=“TUVUNG”,
KEY_ID=“ID”,
KEY_theme=“他们”,
KEY_NGHIA=“NGHIA”,
KEY_LOAI=“LOAI”,
KEY_NGAY=“NGAY”;
公共数据库处理程序(上下文){
super(上下文、数据库名称、null、数据库版本);
}
@凌驾
public void onCreate(SQLiteDatabase db){
db.execSQL(“创建表”+TABLE_TUVUNG+”(“+KEY_ID+”整数主键自动递增“+KEY_THEM+”文本“+KEY_NGHIA+”文本“+KEY_LOAI+”文本“+KEY_NGAY+”文本)”);
}
@凌驾
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
db.execSQL(“如果存在删除表”+表_TUVUNG);
onCreate(db);
}
公共联系人(Word联系人){
SQLiteDatabase db=getWritableDatabase();
ContentValues=新的ContentValues();
value.put(KEY_THEM,contact.getthem());
value.put(KEY_NGHIA,contact.getnghia());
value.put(KEY_LOAI,contact.getloai());
value.put(KEY_NGAY,contact.getngay());
db.insert(TABLE_TUVUNG,null,value);
db.close();
}
公共字getContact(int-id){
SQLiteDatabase db=getReadableDatabase();
Cursor Cursor=db.query(TABLE_TUVUNG,new String[]{KEY_ID,KEY_THEM,KEY_NGHIA,KEY_LOAI,KEY_NGAY},KEY_ID+“=?”,new String[]{String.valueOf(ID)},null,null,null,null);
如果(光标!=null)
cursor.moveToFirst();
Word contact=新词(Integer.parseInt(cursor.getString(0)),cursor.getString(1),cursor.getString(2),cursor.getString(3),cursor.getString(4));
db.close();
cursor.close();
回接;
}
公共联系人(文字联系人){
SQLiteDatabase db=this.getWritableDatabase();
delete(TABLE_TUVUNG,KEY_ID+“=?”,新字符串[]{String.valueOf(contact.getid())});
db.close();
}
public void valuestact(文字联系人){
ContentValues=新的ContentValues();
value.put(KEY_THEM,contact.getthem());
value.put(KEY_NGHIA,contact.getnghia());
value.put(KEY_LOAI,contact.getloai());
value.put(KEY_NGAY,contact.getngay());
返回;
}
public int getWordScont(){
SQLiteDatabase db=this.getReadableDatabase();
Cursor Cursor=db.rawQuery(“SELECT*FROM”+TABLE_TUVUNG,null);
int count=cursor.getCount();
db.close();
cursor.close();
返回计数;
}
public int updateContact(Word联系人){
SQLiteDatabase db=getWritableDatabase();
ContentValues=新的ContentValues();
value.put(KEY_THEM,contact.getthem());
value.put(KEY_NGHIA,contact.getnghia());
value.put(KEY_LOAI,contact.getloai());
value.put(KEY_NGAY,contact.getngay());
int rowsAffected=db.update(TABLE_TUVUNG,values,KEY_ID+“=?”,新字符串[]{String.valueOf(contact.getid())});
db.close();
返回受影响的行;
}
公共列表getAllwords(){
List words=new ArrayList();
SQLiteDatabase db=getWritableDatabase();
Cursor Cursor=db.rawQuery(“SELECT*FROM”+TABLE_TUVUNG,null);
if(cursor.moveToFirst()){
做{
add(新词(Integer.parseInt(cursor.getString(0))、cursor.getString(1)、cursor.getString(2)、cursor.getString(3)、cursor.getString(4));
}
while(cursor.moveToNext());
}
cursor.close();
db.close();
返回单词;
}

尝试此链接,它可能会解决您的问题


我希望它能帮助您……

在我拥有数据库时在listview中搜索。。。而是在数据库中搜索,并在每次搜索后重新填充listview!