我正在制作食谱应用。所以我的listview包含所有菜肴。当用户点击时,说" burger",我想打开汉堡配方。但是,我应该为每道菜创建一个新活动吗?是否可以创建模板活动并将所有配方存储在数据库中(包括图像)?
谢谢!
答案 0 :(得分:0)
我没有提供代码,因为您需要在自己的时间内学习一些不同的东西。
首先,不要为每个食谱制作新的活动课程。有一个RecipeActivity
获取ID。要将ID传递给活动,请使用intent extras。示例:Simple example for Intent and Bundle
对于数据库,请使用SQLite
。示例:http://www.codeofaninja.com/2013/02/android-sqlite-tutorial.html
答案 1 :(得分:0)
我建议你将点击项目的ID传递给控制器,这会获取ID,并在数据库中搜索所有需要带有该ID的信息的信息(你应该使用ormlite框架简单地说,然后启动一个显示recipe的活动,除了显示收到它的数据之外没有别的事情要做。
这样,您的可移植性会增加,您的DisplayReceipeActivity(如果可能)是干净的,只能执行它应该执行的操作:显示数据,并且您的控制器可以完成所有工作。
另外,我会创建一个名为Receipe的模型类,它可以包含一个recipe的所有属性,还可以提供公共方法,如createReceipeFromDatabase(ID)等。
此外,在开始编写复杂的应用程序之前,您应该阅读有关设计模式和OOP概念的内容。
我希望它有所帮助,祝你好运!
答案 2 :(得分:0)
一般情况下,这取决于您的应用,您应该权衡使用片段和活动的优缺点,以确切了解您的应用。
例如,如果包含您的菜单的列表视图的活动有Navigation drawer
,并且当用户看到食谱时应该可以访问此抽屉,那么在片段中显示配方是显而易见的,而不是在{{1}的新活动中显示将无法看见。
其他重要的是片段的生命周期比活动的生命周期更棘手。 (请在此处查看:https://github.com/xxv/android-lifecycle)
活动和片段之间的主要区别是片段可以在活动中使用但反之亦然。因此,如果您将来需要将配方放入应用程序的其他部分,那么使用片段会更容易。
答案 3 :(得分:0)
创建TemplateActivity
,当您点击列表项时,将行ID传递给TemplateActivity
,如下所示
Intent i = new Intent(context,TemplateActivity.class);
i.putExtra("rowid", rowID);
context.startActivity(i);
在TemplateActivity
中获取行ID如下
Intent i = getIntent();
int rowID = i.getIntExtra("rowid", 0);
然后,您可以使用行ID查询数据库以获取数据