java - 如何更新列表视图的 Java(Android) 数组中的值(简单的购物清单应用程序)
问题描述
我是编程新手,作为乐趣练习,我创建了一个简单的应用程序,该应用程序存储具有预定成分的食谱,用户只需单击每个食谱即可将其放入他/她的购物清单。此外,可以将单个对象添加到列表中。该应用程序目前运行良好,但如果我选择 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
解决方案
当您想添加一种新成分时,您必须首先检查它是否已经存在。如果存在,则更新成分的数量。如果不是,则添加值为 1 的成分。使用HashMap<String, Int>
where first String 是您的成分的名称而 Int 是相应的数字怎么样?
推荐阅读
- amazon-web-services - AWS 托管服务中的 Apache Storm 替代方案是什么?
- java - Java - 通过使用文件中的数据构建不同类型的对象来填充列表
- azure - 用户授权密钥与帐户密钥 - 安全性?
- php - 无法打开文件“app/tests/php/Test.php”
- three.js - 模板缓冲区交叉点可视化
- macos - 弹出dbca(oracle数据库配置助手)窗口时xquartz颜色问题
- react-native - 反应导航自定义标签栏动画不起作用
- mysql - Laravel 在 200 万条记录上给出超时错误
- reactjs - MUI 0.20.x 和 MUI 4.44 未加载基于更高版本的页面无法正确呈现
- pandas - 如何在熊猫中使用阈值进行映射