我有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();
}
});
答案 0 :(得分:0)
为什么不生成一个可以放入HashMap
或类似内容的密钥,而不是尝试生成一个变量名来存储某些东西(这很复杂,可能不是你真正想要做的)。
这样它只是一个可以轻松生成/操作的字符串键,获取值只是一个地图查找而不是变量引用。
答案 1 :(得分:0)
menuNapojeArray.get(position)
返回什么类型?您必须确保此类型正确实现equals()
方法。否则,如果它们不共享同一实例,则无法比较这两个对象。因此,再次添加另一个副本。
另见
What issues should be considered when overriding equals and hashCode in Java?