Я хотел бы создать что-то вроде динамического предложения where, но бороться с ним.
FrameWork: Я хочу использовать 4 кнопки-переключателя, которые, очевидно, возвращают меня с "Togglebutton.ischecked () "истинный или ложный логический.В соответствии с этим я хочу выбрать правильную программу в моей базе данных.Кнопки Toggle имеют значения «Basic», «Common», «Uncommon» и «Rare».Если нажата кнопка Togglebuttons, она вызывает метод DB, который затем приводит к настройке моего макета с данными базы данных.
Проблема: У меня проблемы с созданием правильного запроса, которыйизменяет whereArguments и whereClause соответственно.Из моего понимания whereClause требуется String, а whereSelection - StringArray.
Что я пробовал:
- Я попытался создать StringArray соответственно,что приводит к проблеме наличия фиксированного индекса.Поэтому у меня были проблемы с созданием умной логики, которая выдает правильный StringArray,
, например, если ToggleButton (tb) tbBasic = true, tbUncommon = false, tbCommon = true, tbRare = true,Мне нужно что-то вроде String [], где Args = new String [] {"Basic", "Common", "Rare"}, тогда как я не могу создать это соответствующим образом с помощью метода "add".
Поэтому я попытался использовать Arraylist, который позволяет очень легко добавлять и удалять в соответствии с переключателями.
Например, если вызывается мой метод DBHelper getAllHeros, я могу каждый раз создавать новый Arraylist, который выдает мне правильный whereArgs.
ArrayList<String> whereArgsList = new ArrayList<>();
if(btnBasic){
whereArgsList.add("Basic");
}
if(btnCommon){
whereArgsList.add("Common");
}
if(btnUncommon){
whereArgsList.add("Uncommon");
}
if(btnRare){
whereArgsList.add("Rare");
}
Cursor c = db.query("TableHeros", null,whereClause, whereArgsList.toArray(new String[0]),null,null,null,null);
Проблема в том, чтоочевидно, что whereClause должен быть соответственно обновлен.Таким образом, в случае когда Arraylist длиннее, чем один элемент, whereClause также потребуется такое же количество элементов.
Я надеюсь, что я ясно изложил свою точку зрения, и я готов попробовать любые Предложения