Создание неоднородной таблицы и передача ее в диалоговое представление списка - PullRequest
0 голосов
/ 01 ноября 2018

Мне интересно, могу ли я сделать следующее. У меня есть неоднородная таблица, которая выглядит так: enter image description here

И, как вы можете видеть, это не так красиво для глаз. То, что я хотел бы сделать, это реализовать это как базу данных или нечто подобное, чтобы к ней легко получить доступ, и передать ее в Dialog ListView. В моем приложении, когда я нажимаю определенную кнопку, я хочу сначала показать список с моими категориями. Если выбрана одна категория, я хочу, чтобы она предложила мне другую Dialog ListView со списком процедур для этой выбранной категории.

Вот два примера того, как это должно работать:

  1. Нажмите кнопку -> всплывающее окно со списком категорий -> выберите CAT1 -> список обработок для всплывающего окна CAT1 -> выберите Treat1 -> всплывающее окно списка времени -> выберите 60 -> всплывающие подсказки -> выберите 8 -> doSomething();
  2. -> Список категорий -> 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. Я думаю, что так легче работать с передачей данных с намерениями или связками.

...