使用生成的变量名创建int

时间:2014-01-11 20:29:44

标签: java android

我有2个数组列表 - > ListView,如果单击ListView中的项目,它会将此项目添加到第二个ListView。如果单击的项目已经在第二个列表中,而不是再次添加它,则将文本替换为数字,后跟项目名称。

但是计数器对于所有项目都是全局的,所以如果我添加另一个项目,它仍会为它添加相同的数字。 我需要一些能够从点击的项目名称中生成变量名称的内容,然后将计数器添加到正确的项目。这是代码,提前谢谢。

menuNapoje.setOnItemClickListener(new OnItemClickListener(){
        int pocet= 2;
        String x = "x ";

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {

            if(rekapitulaceObjArray.contains(menuNapojeArray.get(position)) || rekapitulaceObjArray.contains(pocet-1 + x + menuNapojeArray.get(position))) {

                rekapitulaceObjArray.set(position, pocet + x + menuNapojeArray.get(position));                          
                pocet++;

            } else {

                rekapitulaceObjArray.add(menuNapojeArray.get(position));
            }

            rekapitulaceAdapter.notifyDataSetChanged();
            Toast.makeText(getApplicationContext(), "Položka " + menuNapojeArray.get(position) + " byla pridána", Toast.LENGTH_SHORT).show();


       }
 });

2 个答案:

答案 0 :(得分:0)

为什么不生成一个可以放入HashMap或类似内容的密钥,而不是尝试生成一个变量名来存储某些东西(这很复杂,可能不是你真正想要做的)。

这样它只是一个可以轻松生成/操作的字符串键,获取值只是一个地图查找而不是变量引用。

答案 1 :(得分:0)

menuNapojeArray.get(position)返回什么类型?您必须确保此类型正确实现equals()方法。否则,如果它们不共享同一实例,则无法比较这两个对象。因此,再次添加另一个副本。

另见

What issues should be considered when overriding equals and hashCode in Java?

How to implement hashCode and equals method