有没有一种方法可以过滤/搜索项目以从sqliteandroid返回列表



我在SqliteDatabase.java中有一个函数,我想通过从SQLiteOpenHelper过滤/搜索来返回一个项目数组列表。我列举了很多例子,但似乎很复杂。任何解决方案都是有帮助的。谢谢

SqliteDatabase.java

public class SqliteDatabase extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 5;
private static final String DATABASE_NAME = "question";
private static final String TABLE_QUESTIONS = "questions";
private static final String COLUMN_ID = "_id";
private static final String COLUMN_COURSENAME = "coursename";
private static final String COLUMN_QUESTION = "question";
private static final String COLUMN_ANSWER = "answer";
private static final String COLUMN_HINT = "hint";
private static final String COLUMN_OPTION1 = "option1";
private static final String COLUMN_OPTION2 = "option2";
private static final String COLUMN_OPTION3 = "option3";
private static final String COLUMN_OPTION4 = "option4";

public SqliteDatabase(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_CONTACTS_TABLE =
"CREATE TABLE " + TABLE_QUESTIONS +
"(" + COLUMN_ID +
" INTEGER PRIMARY KEY," + COLUMN_COURSENAME +
" TEXT," + COLUMN_QUESTION + " TEXT," + COLUMN_ANSWER + " TEXT," + COLUMN_HINT + " TEXT," + COLUMN_OPTION1 + " TEXT,"
+ COLUMN_OPTION2 + " TEXT," + COLUMN_OPTION3 + " TEXT," + COLUMN_OPTION4 + " TEXT" + ")";
db.execSQL(CREATE_CONTACTS_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_QUESTIONS);
onCreate(db);
}
public ArrayList<QuestionM> filter(String txt){
ArrayList<QuestionM> filteredQuestions = new ArrayList<>(); 
//here, i want to filter list of QuestionM by course
return filteredQuestions;
}

问题M.java

public class QuestionM {
int id;
private String course ,question, answer,hint, option1, option2, option3 ,option4;
public String getCourse() {
return course;
}

在java 8 API中很容易,比如流。它有一个过滤器,可以帮助您轻松解决问题。您还可以在SQL查询中查找Mybatis框架来解决这个问题。

如果你使用Kotlin,你只需使用"过滤器",

val filteredQuestions =  completeQuestions.filter { quesstion-> question.course == "your course you need to filter" }

使用java,您可以使用Streams API,之前它支持最低API版本24,好消息是现在您可以使用java 8语言API,而不需要应用程序的最低API级别。-https://developer.android.com/studio/write/java8-support#library-去雾

流示例,

List<QuestionM> filteredQuestions = completeQuestions.stream()
.filter(s -> s.getCourse().equals("yourcourse"))
.collect(Collectors.toList());

最新更新