我尝试搜索将JSONObject
转换为HashMap
,但大部分结果都是针对Java而非Android。因此,如果您以前有过这方面的经验,我希望有人可以分享。
listview_with_simpleAdapter_and_hashmap.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main4);
String[] food_id= new String[]{"1", "2", "3"};
String[] food_name = new String[]{"apple", "orange", "banana"};
List<HashMap<String, String>> aList = new ArrayList<HashMap<String, String>>();
for (int i = 0; i < 3; i++) {
HashMap<String, String> hm = new HashMap<String, String>();
hm.put("ID", food_id[i]);
hm.put("Name", food_name[i]);
aList.add(hm);
}
String[] from = {"ID", "Name"};
int[] to = {R.id.text_id, R.id.text_name};
SimpleAdapter adapter = new SimpleAdapter(this, aList, R.layout.list_item, from, to);
ListView listView = (ListView) findViewById(R.id.listView);
listView.setAdapter(adapter);
}
此文件工作正常,每行只显示2列;
json.java
TextView mTxtDisplay;
String url = "http://192.168.1.103/web_service/omg.php/";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTxtDisplay = (TextView) findViewById(R.id.tv);
JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
mTxtDisplay.setText(response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// TODO Auto-generated method stub
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(jsObjRequest);
192.168.1.103/web_service/omg.php /
{
"32":"Western Food",
"35":"Japanese Food",
"37":"Italian Food"
}
JSON也运行良好。格式与ListView
数据完全相同 - &gt; ID和名称。
所以我的问题是如何将 omg.php 中的JSONObject
转换为listview_with_simpleAdapter_and_hashmap.java?我只需要一个简单的例子。
答案 0 :(得分:3)
你可以这样做:
ListView listView = (ListView) findViewById(R.id.listView);
// ...
@Override
public void onResponse(JSONObject response) {
List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
try {
Iterator<String> iterator = response.keys();
while (iterator.hasNext()) {
String key = iterator.next();
String value = response.getString(key);
HashMap<String, String> map = new HashMap<>();
map.put(KEY_ID, key);
map.put(KEY_NAME, value);
list.add(map);
}
} catch (JSONException e) {
e.printStackTrace();
}
if(list.size() > 0) {
String[] from = {KEY_ID, KEY_NAME};
int[] to = {R.id.text_id, R.id.text_name};
SimpleAdapter adapter = new SimpleAdapter(MainActivity.this, list,
R.layout.list_item, from, to);
listView.setAdapter(adapter);
}
}
答案 1 :(得分:1)
尝试使用此代码将Jsonobject转换为hashmap
Map<String, String> params = new HashMap<String, String>();
try
{
Iterator<?> keys = jsonObject.keys();
while (keys.hasNext())
{
String key = (String) keys.next();
String value = jsonObject.getString(key);
params.put(key, value);
}
}
catch (Exception xx)
{
xx.toString();
}