我是编程的新手,为了娱乐,我创建了一个简单的应用程序,用于存储具有预定配料的食谱,用户只需单击一下即可将其放入购物清单。同样,可以将单个对象添加到列表中。该应用程序目前可以正常工作,但是例如,如果我选择3个包含“牛奶”的食谱,则牛奶会在列表中出现3次。显然,最好在一行上显示Milk 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方法:
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
答案 0 :(得分:0)
当您想添加新成分时,必须首先检查它是否还不存在。如果存在,则更新成分数。如果不是,则添加值1的成分。使用HashMap<String, Int>
怎么办,其中第一个String是成分的名称,而Int是对应的数字?