我们来展示一个简单的网络获取json文件,并且将其解析并更新至listview的范例
首先,我们读取到网络的json数据,这里我们从聚合数据获取相关的json串
接下来,我们使用HiJson编辑器将其格式化,分层数据,建立vo包和相关实体类
建类和布局的编写,这里就不多说了,我们来说一下代码块
public class MainActivity extends Activity {
private ListView lv_main;
private MyAdapter adapter;
private List<Data> data;
//我们用线程机制来发送更新listview
Handler handler=new Handler(){
public void handleMessage(android.os.Message msg) {
adapter.addRest(data);
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv_main = (ListView) findViewById(R.id.lv_main);
adapter=new MyAdapter(MainActivity.this);
lv_main.setAdapter(adapter);
getJson();
}
//这里我们定义一个解析json的方法
private void getJson() {
//得到json文件获取的路径
final String path="http://japi.juhe.cn/joke/content/list.from?key=abab5d1154ba71eb9dd88c3a03838de1&page=2&pagesize=10&sort=asc&time=1418745237";
//开启一个线程
new Thread(){
public void run() {
//建立client对象
HttpClient client=new DefaultHttpClient();
try {
HttpGet get=new HttpGet(path);
HttpResponse response=client.execute(get);
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode==200) {
InputStream is=response.getEntity().getContent();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String str="";
String json="";
while ((str=br.readLine())!=null) {
json+=str;
}
Gson gson=new Gson();
Type type=new TypeToken<Joke>(){}.getType();
Joke joke=gson.fromJson(json, type);
Result result=joke.result;
data = result.data;
System.out.println(data);
handler.sendEmptyMessage(0x123);
}
} catch (Exception e) {
e.printStackTrace();
}
};
}.start();
}
}
以上就是简单的解析网络获取的json串数据的方法,具体的解题方法,看获取到的数据的具体情况而定,还有 ,在做这类方法时,要记得设置
<uses-permission android:name="android.permission.INTERNET"/>
权限哈