gpt4 book ai didi

java - 如何在 Android 中进行搜索

转载 作者:行者123 更新时间:2023-12-01 04:47:41 25 4
gpt4 key购买 nike

我有以下代码,可以正常工作。我想添加搜索功能...您能告诉我应该做什么以及在哪里

MyDatabase.java

package com.example.test4;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class MyDatabase {
public static final String MY_DB2 = "testdb5";
MyHelper mh;
Context myCon;
SQLiteDatabase sdb;

public MyDatabase(Context c) {
myCon = c;
mh = new MyHelper(myCon, MY_DB2, null, 1);
}

public void open() {
sdb = mh.getWritableDatabase();
}

public class MyHelper extends SQLiteOpenHelper {

public MyHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table students(_id integer primary key, "
+ "s_name text, " + "s_attendance text, "
+ "s_homework text, " + "s_participation text, "
+ "s_quiz integer, " + "s_test integer, "
+ "s_comment text, " + "p_email text);");
Log.d("1", "Table Created");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub

}

}

public void StudentsInsert(ContentValues cv) {
sdb.insert("students", null, cv);
}

public Cursor getStudents() {
Cursor c = sdb.query("students", null, null, null, null, null, null);
return c;
}

public Cursor filterStudents() {
// SQLiteDatabase db = mh.getReadableDatabase();

Cursor c = sdb.query("students", new String[] { "s_name",
"s_attendance", "s_homework", "s_participation", "s_quiz",
"s_test", "s_comment", "p_email" }, "s_name like %a%", null,
null, null, null);
return c;

}

}

我认为我在 filterStudents() 中做错了什么...

这是我在其他文件中的内容

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

public void afterTextChanged(Editable s) {
}

public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}

public void onTextChanged(CharSequence s, int start,
int before, int count) {
sca.getFilter().filter(s.toString());
}
});

sca.setFilterQueryProvider(new FilterQueryProvider() {
public Cursor runQuery(CharSequence constraint) {
return mdb.filterStudents();
}
});

最佳答案

尝试在过滤字符串两边加引号。即,而不是:

like %a%

做到:

like '%a%'

保持双引号 (") 不变,但在过滤字符串周围添加单引号。

关于java - 如何在 Android 中进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15562136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com