У меня есть таблица базы данных с несколькими столбцами
Я использую собственный список <> и заполняю его из базы данных
То, что я хочу сделать, это фильтр, который войдет в список из базы данных в зависимости от пользовательского ввода
например, если бы у меня была таблица вроде этого:
name|phone|date|address
Пользователь может указать любой фильтр (по имени, по телефону, по дате... или все), и в список войдут только те элементы, которые соответствуют всем критериям
Есть ли способ сделать это?
Метод, который возвращает все элементы из базы данных
public List<MoviesDatabaseEntry> getAllMovies(String table)
{
List<MoviesDatabaseEntry> lists = new ArrayList<MoviesDatabaseEntry>();
// Select All Query
String selectQuery = "SELECT * FROM " + table;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst())
{
do {
MoviesDatabaseEntry list = new MoviesDatabaseEntry();
list.set_id(Integer.parseInt(cursor.getString(0)));
list.set_title(cursor.getString(1));
list.set_runtime(cursor.getString(2));
list.set_rating(cursor.getDouble(3));
list.set_genres(cursor.getString(4));
list.set_type(cursor.getString(5));
list.set_lang(cursor.getString(6));
list.set_poster(cursor.getString(7));
list.set_url(cursor.getString(8));
list.set_director(cursor.getString(9));
list.set_actors(cursor.getString(10));
list.set_plot(cursor.getString(11));
list.set_year(cursor.getInt(12));
list.set_country(cursor.getString(13));
list.set_date(cursor.getInt(14));
// Adding to list
lists.add(list);
} while (cursor.moveToNext());
}
// return list
db.close();
cursor.close();
return lists;
}
Вы можете отфильтровать записи, которые вы получаете в SQL-запросе, который вы строите в этой строке:
String selectQuery = "SELECT * FROM " + table;
Чтобы отфильтровать полученный набор данных, вы должны добавить к нему предложение WHERE. Например, если вам нужны только те записи, где рейтинг превышает 3, вы должны изменить это на:
String selectQuery = "SELECT * FROM " + table + " WHERE rating > 3";
SQL - очень мощный язык, который предлагает множество возможностей. Это важный навык при работе с реляционными базами данных. Когда вы захотите изучить его, я могу порекомендовать вам интерактивный учебный веб-сайт http://sqlzoo.net/
Вы должны изменить запрос к базе данных для получения определенных данных из запроса.
У вас есть одна функция, которая возвращает все строки из базы данных следующим образом: getAllMovies(String table)
Здесь вы используете:
String selectQuery = "SELECT * FROM " + table;
Сделайте новую функцию следующим образом:
public List<MoviesDatabaseEntry> getSelectedMovies(String table)
{
List<MoviesDatabaseEntry> lists = new ArrayList<MoviesDatabaseEntry>();
Cursor cursor = db.query(true, TABLE_NAME, new String[] { <your row names> },
**check condition(as string)**, null,
null, null, null, null);
...
}
Теперь просто вызовите эту функцию, когда требуется, с вашей конкретной строкой запроса
Сделайте столько функций, сколько хотите!