如何更新 Java(Android) 数组中的值列表视图(简单的购物清单应用程序)



我是编程新手,为了好玩,我创建了一个简单的应用程序,用于存储具有预定成分的食谱,用户可以将其放在他/她的购物清单上,只需单击一下每个食谱。此外,可以将单个对象添加到列表中。该应用程序到目前为止运行良好,但是例如,如果我选择包含"牛奶"的 3 个食谱,牛奶会在列表中出现 3 次。显然,最好在一行上显示牛奶 x 3。我已经寻找了几个小时的解决方案,但没有运气。

这就是我从菜单列表中添加(和排序(成分、牛奶和饼干的方式:

if(id == R.id.action_milkAndCookies) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Milk and cookies");
builder.setPositiveButton("Add to list", new 
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Collections.addAll(shoppingList, "Milk", "Cookies");
Collections.sort(shoppingList);
storeArrayVal(shoppingList, getApplicationContext());
lv.setAdapter(adapter);
}
});

OnCreate-method:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

shoppingList = getArrayVal(getApplicationContext());
Collections.sort(shoppingList);
adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, 
shoppingList);
lv = (ListView) findViewById(R.id.listView);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView parent, View view, final int 
position, long id) {
String selectedItem = ((TextView) view).getText().toString();
if 
(selectedItem.trim().equals(shoppingList.get(position).trim())) {
removeElement(selectedItem, position);
} else {
Toast.makeText(getApplicationContext(),"Can not be removed", 
Toast.LENGTH_LONG).show();
}
}
});
}

输出为:

饼干 饼干 牛奶 牛奶

希望它是:

饼干 x 2 牛奶 x 2

当您想添加新成分时,您必须首先检查它是否还不存在。如果存在,则更新成分的数量。如果没有,请添加值为 1 的成分。使用第一个字符串是成分名称,Int是相应数字的HashMap<String, Int>怎么样?

最新更新