【发布时间】:2019-03-05 21:20:19
【问题描述】:
我正在尝试在 Android Studio 中创建一个允许我在运行时将项目添加到我的 listView 的 Android 应用程序。我有一个用于添加预定义项目的代码,但当我修改它以在每次按下添加按钮时添加一个项目时,我设法添加了第一个,但是当我尝试在此之后添加更多时,所有其他项目都变成了和第一个一样。
每个项目都有一个产品 ID 和一个金额,其中 idText 在我的应用条码扫描器扫描产品时设置,然后我通过在 editText widget 中指定一个值来设置 amountText,然后创建一个通过按“添加”按钮,使用这些值的项目。当我使用它时,第一个最终应该是这样的:
778216562 12
但是当我添加另一个时,所有以前的项目都会变成新的:
589095564 15
589095564 15
这是用于将项目添加到我的 listView 的代码。 addItem() 方法在我按下应用程序上的添加按钮时被调用,listItem 也是这样声明的 List<HashMap<String, String>> listItems = new ArrayList<>();:
public void addItem(){
if(amountText.getText().toString().matches("[0-9]+")) {
productList.put(idText.getText().toString(), amountText.getText().toString());
SimpleAdapter adapter = new SimpleAdapter(this, listItems, R.layout.list_item,
new String[]{"idForID", "idForAmount"},
new int[]{R.id.productId, R.id.amount});
resultsMap.put("idForID", idText.getText().toString());
resultsMap.put("idForAmount", productList.get(idText.getText().toString()));
listItems.add(resultsMap);
productsView.setAdapter(adapter);
}
}
有谁知道如何更改此代码,这样我就可以在不更改前一个项目的情况下继续添加项目,而在此期间,我无法添加与前一个产品 ID 相同但数量不同的项目,并且想知道是否有人也知道如何解决这个问题?
【问题讨论】:
-
看起来您每次调用
addItem()时都会不断创建和设置新适配器。尝试将您的SimpleAdapter和您的productsView.setAdapter移动到您的onCreate()方法。 -
为什么不用recyclerview
-
我尝试将 SimpleAdapter 和 productsView.setAdapter 移动到 onCreate() 但同样的事情仍然发生。我以前没听说过recyclerview,但我可以试着查一下。
标签: java android android-listview android-arrayadapter listview-adapter