Мне интересно, могу ли я сделать следующее.
У меня есть неоднородная таблица, которая выглядит так:
И, как вы можете видеть, это не так красиво для глаз. То, что я хотел бы сделать, это реализовать это как базу данных или нечто подобное, чтобы к ней легко получить доступ, и передать ее в Dialog ListView
.
В моем приложении, когда я нажимаю определенную кнопку, я хочу сначала показать список с моими категориями. Если выбрана одна категория, я хочу, чтобы она предложила мне другую Dialog ListView
со списком процедур для этой выбранной категории.
Вот два примера того, как это должно работать:
- Нажмите кнопку -> всплывающее окно со списком категорий -> выберите CAT1 -> список обработок для всплывающего окна CAT1 -> выберите Treat1 -> всплывающее окно списка времени -> выберите 60 -> всплывающие подсказки -> выберите 8 ->
doSomething();
- -> Список категорий -> CAT3 -> -> Список процедур -> Treat17 ->
doSomething();
В настоящее время я реализовал это с большим количеством слушателей onClick для такого метода, который мне приходится реализовывать слишком много раз, и за ним трудно следовать.
private void chooseTreatmentList(Context context, int listTitle,
String[] listElements,
DialogInterface.OnClickListener selectedItemListener) {
AlertDialog.Builder treatmentList= new AlertDialog.Builder(context);
treatmentList.setTitle(listTitle);
treatmentList.setItems(listElements, selectedItemListener);
treatmentList.create().show();
}
Мне было интересно, может ли это быть проще реализовать путем создания базы данных вместо использования большого количества строковых массивов.
EDIT:
Итак, я подумал о возможном способе реализации этого, но я не нашел учебник, чтобы помочь реализовать это, поэтому я действительно прошу вашей помощи.
Я думал об использовании комнаты. Я уже создал базу данных для категорий Categories(int catId, String title)
, и мне потребуется создать следующее для childs:
Treatment(int catId, int treatId, String title, boolean hasSubCat, int price, String name)
Subtreatment(int treatId, int subTrId, String title, boolean hasSessions, int price, String name)
Sessions(int subTrId, int nOfSessions, price)
Каждое значение, установленное мной в приложении, в этой базе данных не вводится пользователем, и всякий раз, когда я утверждаю true для hasSubCat
и hasSessiosn
, значения цены и имени должны становиться пустыми.
Моя логика такова: прикрепите «Лечение как дочерний элемент категорий», затем выполните проверку для hasSubCat
. Если false , получите имя и цену. Если true , присоедините базу данных Subtreatment
как дочернюю для Treatment
.
Затем выполните аналогичную проверку на hasSessions
. Если false , получить необходимые значения, если true заявить Sessions
базу данных как дочерний элемент Subtreatment
.
Вот где мне сложно: быть нубом и никогда не работать с такими базами данных.
Для моей базы данных Categories
я уже реализовал классы Category
, CategoryDatabase
, CategoryRepository
, CategoryViewModel
и интерфейс CategoryDao
. Нужно ли создавать то же самое для всех других баз данных?
Где я могу присоединить дочерний элемент к родительской базе данных и где я должен выполнить проверки для логических переменных?
Как я могу сделать это похожим на диалог списка и при нажатии на CAT1, например, отобразится список лечения и так далее, где это возможно?
По поводу последнего вопроса я подумал о выполнении действия DisplayList.class
с настраиваемым представлением, в котором есть параметр xml android:theme="@android:style/Theme.Holo.Dialog
. Я думаю, что так легче работать с передачей данных с намерениями или связками.