我将一些json数据填充到我的listview中,我将它存储在Hashmap中,然后将其添加到arraylist中,但我遇到了一些问题。
我的代码:
try{
final String result = response.body().string();
JSONObject jsonObject = new JSONObject(result);
String data = jsonObject.getString("data");
JSONArray foodintervalarray = new JSONArray(data);
for (int j = 0; j < foodintervalarray.length(); j++) {
JSONObject jsonObject1 = foodintervalarray.getJSONObject(j);
final String food_interval =
jsonObject1.getString(FOOD_INTERVAL);
Log.i("food_interval ", "food_interval " + food_interval);
String item_name = jsonObject1.getString(ITEM_NAME);
Log.i("item_name ", "item_name " + item_name);
final HashMap<String, String> menuMap = new HashMap<String,
String>();
menuMap.put(FOOD_INTERVAL, food_interval);
menuMap.put(ITEM_NAME, item_name);
runOnUiThread(new Runnable() {
@Override
public void run() {
foodintervallist.add(menuMap);
ListViewAdapter listViewAdapter = new
ListViewAdapter(Diet_Order_Activity_New.this,
foodintervallist);
listView.setAdapter(listViewAdapter);
listViewAdapter.notifyDataSetChanged();
}
});
}
这里发布的是我的LogCat:
food_interval: food_interval Breakfast
item_name: item_name Brown Bread
food_interval: food_interval Breakfast
item_name: item_name Butter
food_interval: food_interval Breakfast
item_name: item_name Papaya
food_interval: food_interval Breakfast
item_name: item_name Milk
food_interval: food_interval 10 A. M
item_name: item_name rice
food_interval: food_interval 11.30 Soup
item_name: item_name tomato soup
food_interval: food_interval Lunch
food_interval: food_interval Lunch
food_interval: food_interval 3.30 PM
///////////////当前列表查看结果/////////////
Breakfast Brown Bread
Breakfast Butter
Breakfast Papaya
Lunch Paneer
Lunch Roti
////////////我希望我的列表视图看起来如何///////////////
Breakfast Brown Bread,Butter ,Paneer
Lunch Paneer,Roti
将一个类型的food_interval放在一列中,并将其项目与逗号组合 例如,不是在一列中显示早餐5次而且其项目也在另一列中单独显示,我应该有一份早餐和黑面包,黄油,木瓜作为其项目的组合 午餐合为一体及其项目合并
但是,我分别在早餐中获得5次早餐,并将其项目分别列入其他栏目
如何实现以上目标?,请帮忙
由于
答案 0 :(得分:0)
我建议使用自定义类来存储数据。 创建这个类:
return os.stat(filename).st_mtime
TypeError: argument should be string, bytes or integer, not list
使用此代码代替
public class MyStorage {
public String name = "";
public ArrayList<String> food = new ArrayList<String>();
public MyStorage (String name, String food) {
this.name = name;
this.food = food;
}
public appendIfSameName(String name, String new_food) {
boolean appended = false;
if (this.name.isEqual(name)) {
ar.add(food);
appended = true;
}
return appended ;
}
}
答案 1 :(得分:0)
首先,获取:
runOnUiThread(new Runnable() {
...
});
出于for循环。
您还需要更改:
menuMap.put(FOOD_INTERVAL, food_interval);<br>
menuMap.put(ITEM_NAME, item_name);
你需要在这里添加一些逻辑来检查food_interval是否已经作为地图中的哈希存在 如果没有,请使用上面的put调用 如果是,则“获取”地图值,使用逗号将项目名称添加到字符串并“放置”新字符串。新的put将取代旧值。
我会把代码留给你作为练习。
晚安,祝你好运