Android将服务器传来的json解析为数组变量,通过java文件simpleadapter输出到页面。

帮我问下,Android将服务器传来的json解析为数组变量,通过java文件simpleadapter输出到页面。
最新回答
五品带砖侍卫

2024-04-28 06:09:14

我做了一个代码如下:
public class MainActivity extends Activity {

ListView listview;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listview = (ListView) findViewById(R.id.listview);
String temp = "[{\"aa\":\"1\",\"bb\":\"2\"},{\"aa\":\"3\",\"bb\":\"4\"},{\"aa\":\"5\",\"bb\":\"6\"}]";
List<Map<String, Object>> data = getList(temp);
SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item, new String[]{"aa","bb"}, new int[]{R.id.aa,R.id.bb});
listview.setAdapter(adapter);
}

public Map<String, Object> getMap(String jsonString) {
JSONObject jsonObject;
try {
jsonObject = new JSONObject(jsonString);
@SuppressWarnings("unchecked")
Iterator<String> keyIter = jsonObject.keys();
String key;
Object value;
Map<String, Object> valueMap = new HashMap<String, Object>();
while (keyIter.hasNext()) {
key = (String) keyIter.next();
value = jsonObject.get(key);
valueMap.put(key, value);
}
return valueMap;
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}

public List<Map<String, Object>> getList(String jsonString) {
List<Map<String, Object>> list = null;
try {
JSONArray jsonArray = new JSONArray(jsonString);
JSONObject jsonObject;
list = new ArrayList<Map<String, Object>>();
for (int i = 0; i < jsonArray.length(); i++) {
jsonObject = jsonArray.getJSONObject(i);
list.add(getMap(jsonObject.toString()));
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
}

item的布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="
http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/aa"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp" />

    <TextView
        android:id="@+id/bb"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="100dp"
        android:textColor="#f00"
        android:textSize="30sp" />

</LinearLayout>


    最后的界面效果:

    

追问
老师,我想问一下,假如说我们从服务器端通过get请求获取json,在Android客户端解析为list>,simpleadapter部分应该怎么做?以前是定义静态数组,把数组变量装到适配器里,然后在xml输出。现在是网络上获取变量,是不是要通过字段匹配,求一篇这样的文章例子。
逗比在此

2024-04-28 09:10:08

你的 意思是获取JSON数据之后显示到listview中?
追问
这样能做到吗?那json解析究竟是解析成什么样子的?
朝朝暮暮

2024-04-28 04:15:02

gson包,可以解析json字符串。google的。