gpt4 book ai didi

java - 如何使用条目从 ListView 中获取特定键的值

转载 作者:行者123 更新时间:2023-12-02 06:26:00 26 4
gpt4 key购买 nike

我面临着从 hashmap listview 的特定键获取所有值的问题。我这里有两个 ListView ,第一个 ListView 是显示从数据库获取的数据,第二个 ListView 是获取从第一个 ListView 中选择的数据。现在,我希望从第二个 ListView 中获取 (FOODID3, itemID) 的所有值以通过 toast 显示,但目前我只能获取从第一个 ListView 接收到的最新值。我认为问题是因为我在适配器上设置了notifyDataSetChanged。请帮忙!谢谢!

这是我的第一个从数据库获取数据的 ListView

private void listMenu(String CID)
{
ArrayList<Object> data = DB.getFood(CID);

LIST2 = new ArrayList<HashMap<String, String>>();

for (int i=0; i<data.size(); i=i+4)
{
HashMap<String, String> map = new HashMap<String, String>();

map.put(FOODID2, (String) data.get(i));
map.put(FOODNAME2, (String) data.get(i+1));
map.put(PRICE2, (String) data.get(i+2));
map.put(RATING2, (String) data.get(i+3));

LIST2.add(map);
}

LISTMENU = (ListView) findViewById(R.id.listMenu);

final List2Adapter adapter = new List2Adapter(MainActivity.this, LIST2);
LISTMENU.setAdapter(adapter);


LISTMENU.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{

HashMap<String, String> map = LIST2.get(position);

itemValue = map.get(FOODNAME2);
itemID = map.get(FOODID2);

Toast.makeText(getApplicationContext(),
"Food ID : " + itemID + "ListItem : " + itemValue , Toast.LENGTH_SHORT)
.show();

listOrder(itemValue, itemID);
}
});
}

这是接收从第一个 ListView 中选择的数据的第二个 ListView 。

private void listOrder(String itemValue, String itemID)
{
HashMap<String, String> map = new HashMap<String, String>();

String quantity = "1";

map.put(FOODID3, itemID);
map.put(FOODNAME3, itemValue);
map.put(FOODQUANTITY3, quantity);

//problem is here, I can only display the latest data received
for(Entry<String, String> entry: map.entrySet())
{
if(entry.getKey().equals(FOODID3))
{
Toast.makeText(getApplicationContext(),
"EXISTS " + entry.getValue(), Toast.LENGTH_SHORT)
.show();
}
}

LIST3.add(map);

LISTORDER = (ListView) findViewById(R.id.listOrder);

List3Adapter adapter = new List3Adapter(MainActivity.this, LIST3);
LISTORDER.setAdapter(adapter);

adapter.notifyDataSetChanged();

LISTORDER.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{

}
});
}

最佳答案

您的 map 可以包含重复的值,但不能包含重复的键

每次使用现有键名称添加元素时,它都会用新值覆盖旧值

请查看Oracle Tutorials - Map

关于java - 如何使用条目从 ListView 中获取特定键的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20522875/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com