我正在使用一个小型/基本的android应用程序,该应用程序允许用户在ListView中创建项目并保留有关这些项目的一些统计信息(例如点击频率等)。现在我有了它,因此用户可以输入新项目的名称,一旦单击“创建”按钮,它将把元素添加到ListView。如果用户选择列表中的一项,它将打开第二项活动,在该活动中,他们将能够分析统计信息,重置点击计数器等。
(*附带信息*:
MainActivity.java是上面显示的主要活动。 ClickerActivity.java是第二个活动,用于显示每个单击器的统计信息。 Clicker.java是一个类,其中包含每个单击器的名称/单击计数/统计信息。
)
我的方法是,当按下“新建Clicker”按钮时,我应该使用他们给定的名称并将其添加到ListView并创建一个Clicker类对象(用于跟踪统计信息)。这些Clicker对象将被本地存储在ArrayList中,这样我就可以轻松地增加和缩小列表。然后启动clickerActivity-将Clicker类对象作为参数传递。
首先,这给我留下了几个问题:如何动态创建此类的实例,并为变量表示赋予有意义的名称(随时随地)。我当时在考虑使用用户输入的字符串变量来命名答题器,但是我不确定是否允许这样做。
例如
// This is the string name the user chooses for the new clicker
String newClickerName = clickerName.getText().toString();
Clicker newClickerName = new Clicker();
// Start the activity and pass the clicker object.
我意识到上面的代码行不通,但这是显示我要执行的操作的最佳方式。我看过一些人建议使用的帖子
Class var = Class.forName(classname);
但是我不确定这是我想要的。
其次,如果您发现这不是一个很好的设计选择(我不是说图形),那么请就如何改进它发表您的意见。我对此并不陌生,感谢您的反馈。
最后,感谢您抽出宝贵时间阅读我的问题。如有任何混淆,请发声,我将尽力澄清。
最佳答案
您正在为无法解决的问题而苦苦挣扎。我了解您想实现以下目标:
用户给您“ nameForMyVariable” String
,并且您想要创建一个具有该名称的变量:Clicker nameForMyVariable;
无法做到这一点。
但是,您可以创建一个Clicker
而不是简单地创建Pair<Clicker, String>
对象,其中String
字段将由您用作键。然后,您可以创建这些ArrayList
的Pair
,并通过查看其键来搜索所需的Clicker
。
注意,您需要创建自己的Pair
类,因为Java没有它。不过,这并不难。
上面的方法还导致了另一个解决方案-使用HashMap<String, Clicker>
,因此String
是密钥。您可以像这样使用它:
HashMap<String, Clicker> clickers = new HashMap<String, Clicker>();
// put some content to the map
clickers.put("nameForMyVariable1", new Clicker());
clickers.put("nameForMyVariable2", new Clicker());
// now you can find appropriate Clicker simply by specifying its key
clickers.get("nameForMyVariable1"); // returns Clicker with nameForMyVariable1 name
告诉我一些无法理解的事情。
编辑:
根据您在评论中提出的问题。假设您在某处创建了
ArrayList<Pair<Clicker, String>> clickers
。您可以像这样添加新的
Pair
:clickers.add(new Pair<Clicker, String>(new Clicker(), "myVariableName1"));
现在看到了吗?完全不使用
Pair
对象的名称。