正如您所看到的,它看起来并不那么漂亮。我想做的就是将此实现为数据库或类似的易于访问的形式,并将其传递给Dialog ListView
。
在我的应用程序中,当我单击某个按钮时,我想首先显示带有我的类别的列表。如果选择了一个类别,我希望它提示我另一个Dialog ListView
,并带有该所选类别的“处理”列表。
以下是有关其工作方式的两个示例:
doSomething();
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)
我在应用程序中设置了每个值,该数据库上没有用户输入,并且每当我对hasSubCat
和hasSessiosn
声明为true时,price和name的值应为空白。
我的逻辑是这样的:将“处理”作为“类别”的子项附加,然后检查hasSubCat
。如果 false ,请获取名称和价格。如果 true ,请附加Subtreatment
数据库作为Treatment
的子级。
然后对hasSessions
做类似的检查。如果 false ,则获取必需的值,如果 true 将Sessions
数据库断言为Subtreatment
的子代。
在这里,对我来说变得很复杂,成为菜鸟并且从不使用此类数据库。
对于我的Categories
数据库,我已经实现了Category
,CategoryDatabase
,CategoryRepository
,CategoryViewModel
类和CategoryDao
接口。我是否需要为所有其他数据库创建相同的数据库?
我应该在哪里将子级附加到父数据库,应该在哪里检查布尔变量?
如何使它类似于“列表对话框”,并且例如在单击CAT1时会出现“治疗”列表等?
关于最后一个问题,我想到了使用具有xml参数DisplayList.class
的自定义视图进行活动android:theme="@android:style/Theme.Holo.Dialog
。我认为这样处理带有意图或捆绑的数据更容易。