创建非均匀表并将其传递到对话框列表视图

时间:2018-11-01 12:45:24

标签: android listview android-alertdialog android-room

我有兴趣执行以下操作。 我有一个非同类表,如下所示: 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();
    }

我想知道是否可以通过构建数据库而不是使用大量String数组来更容易地实现它。

编辑:

因此,我想过一种可能的方法来实现此目的,但是我没有找到帮助实现此目的的教程,因此,我真的在寻求您的帮助。 我想到要使用Room。我已经为类别Categories(int catId, String title)创建了数据库,并且需要为孩子创建以下内容:

  • 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)

我在应用程序中设置了每个值,该数据库上没有用户输入,并且每当我对hasSubCathasSessiosn声明为true时,price和name的值应为空白。

我的逻辑是这样的:将“处理”作为“类别”的子项附加,然后检查hasSubCat。如果 false ,请获取名称和价格。如果 true ,请附加Subtreatment数据库作为Treatment的子级。 然后对hasSessions做类似的检查。如果 false ,则获取必需的值,如果 true Sessions数据库断言为Subtreatment的子代。

在这里,对我来说变得很复杂,成为菜鸟并且从不使用此类数据库。

对于我的Categories数据库,我已经实现了CategoryCategoryDatabaseCategoryRepositoryCategoryViewModel类和CategoryDao接口。我是否需要为所有其他数据库创建相同的数据库? 我应该在哪里将子级附加到父数据库,应该在哪里检查布尔变量?

如何使它类似于“列表对话框”,并且例如在单击CAT1时会出现“治疗”列表等?

关于最后一个问题,我想到了使用具有xml参数DisplayList.class的自定义视图进行活动android:theme="@android:style/Theme.Holo.Dialog。我认为这样处理带有意图或捆绑的数据更容易。

0 个答案:

没有答案