android 网络获取json并且显示(2)
2015-04-10 16:40
253 查看
1.将要的取得的json数据格式如下:
我们封装之前的类用google提供的JSONArray和JSONObject类对json字符串进行解析。
对于姚明显示每一条数据,我们封装了一个类如下:
这个类简单封装了将要显示的消息。
2.我们要实现把json字符串的数据存进有Message类list中。具体实现如下:
}
`
这个类同样预留了两个接口,实现此类的时候需要实现。用来对取得数据进行操作和对失败情况进行操作,此类将获取的数据存进list中了。
3.需要对取得列表数据进行显示,本文用ListActivity来显示,同时需要实现BaseAdapter方法。实现的代码如下:
该类的构造方法需啊哟传入Context。至于adapater的数据时通过自己实现的addaLL方法来实现。
4.实现Timeline 类,并将数据传入adapter来显示。
具体代码如下:
我们封装之前的类用google提供的JSONArray和JSONObject类对json字符串进行解析。
对于姚明显示每一条数据,我们封装了一个类如下:
public class Message { private String msg = null,msgId = null,phone_md5 = null; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public String getMsgId() { return msgId; } public void setMsgId(String msgId) { this.msgId = msgId; } public String getPhone_md5() { return phone_md5; } public void setPhone_md5(String phone_md5) { this.phone_md5 = phone_md5; } public Message(String msgId, String msg, String phone_md5) { this.msg = msg; this.msgId = msgId; this.phone_md5 = phone_md5; } }
这个类简单封装了将要显示的消息。
2.我们要实现把json字符串的数据存进有Message类list中。具体实现如下:
public class Timeline { public Timeline(String phone_md5,String token,int page,int perpage, final SuccessCallback successCallback,final Failcallback failcallback){ new NetConnection(Config.SERVER_HTTP, HttpMethod.GET, new NetConnection.SuccessCallback() { @Override public void onSuccess(String result) { // TODO Auto-generated method stub try { JSONObject jsonObj = new JSONObject(result); System.out.println(jsonObj.getInt(Config.KEY_STATUS)+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"); switch (jsonObj.getInt(Config.KEY_STATUS)) { case Config.STATUS_SUCCESS: if (successCallback != null) { List<Message> data = new ArrayList<Message>(); JSONArray msgArray = jsonObj.getJSONArray(Config.KEY_TIMELINE); JSONObject json = null; System.out.println(msgArray.length()); for (int i = 0; i < msgArray.length(); i++) { json = msgArray.getJSONObject(i); data.add(new Message(json.getString(Config.KEY_MSGID), json.getString(Config.KEY_MSG),json.getString(Config.KEY_PHONE_MD5))); System.out.println(data.toString()+"555555555555555"); } successCallback.onSuccess(jsonObj.getInt(Config.KEY_PAGE), jsonObj.getInt(Config.KEY_PAGE), data); } break; case Config.STATUS_INVALID_TOKEN: if (failcallback != null) { failcallback.onFail(Config.STATUS_INVALID_TOKEN); } default: if (failcallback != null) { failcallback.onFail(Config.STATUS_FAIL); } break; } } catch (JSONException e) { if (failcallback != null) { failcallback.onFail(Config.STATUS_FAIL); } } } }, new NetConnection.FailCallback() { @Override public void onFail() { // TODO Auto-generated method stub if (failcallback != null) { failcallback.onFail(Config.STATUS_FAIL); } } }, Config.KEY_ACTION,Config.ACTION_TIMELINE,Config.KEY_PHONE_MD5,phone_md5, Config.KEY_TOKEN,token,Config.KEY_PAGE,page+"",Config.KEY_PERPAGE,perpage+""); } public static interface SuccessCallback{ void onSuccess(int page,int perpage,List<Message> timeline); } public static interface Failcallback{ void onFail(int errorCode); }
}
`
这个类同样预留了两个接口,实现此类的时候需要实现。用来对取得数据进行操作和对失败情况进行操作,此类将获取的数据存进list中了。
3.需要对取得列表数据进行显示,本文用ListActivity来显示,同时需要实现BaseAdapter方法。实现的代码如下:
public class TimelineAdapter extends BaseAdapter{ private Context context; public Context getContext(){ return this.context; } private List<Message> data = new ArrayList<Message>(); public TimelineAdapter(Context context) { // TODO Auto-generated constructor stub this.context = context; } @Override public int getCount() { // TODO Auto-generated method stub return data.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return data.get(position); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } public void addAll(List<Message> data){ this.data.addAll(data); notifyDataSetChanged(); } public void clear(){ data.clear(); notifyDataSetChanged(); } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = LayoutInflater.from(getContext()).inflate(R.layout.aty_timeline_list_cell, null); convertView.setTag(new ListCell((TextView)convertView.findViewById(R.id.tvCell))); } ListCell lc = (ListCell)convertView.getTag(); Message msg = (Message) getItem(position); lc.getTvCellLable().setText(msg.getMsg()); return convertView; } private static class ListCell{ private TextView tvCellLable; public ListCell(TextView tvCellLable){ this.tvCellLable = tvCellLable; } public TextView getTvCellLable(){ return tvCellLable; } } }
该类的构造方法需啊哟传入Context。至于adapater的数据时通过自己实现的addaLL方法来实现。
4.实现Timeline 类,并将数据传入adapter来显示。
具体代码如下:
private void loadMessage(){ System.out.println("losdlllllllllllll"); //final ProgressDialog pd = ProgressDialog.show(this, getResources().getString(R.string.connecting), //getResources().getString(R.string.connect)); new Timeline(phone_md5, token, 1, 20, new Timeline.SuccessCallback() { @Override public void onSuccess(int page, int perpage, List<Message> timeline) { // TODO Auto-generated method stub //pd.dismiss(); adapter.clear(); adapter.addAll(timeline); Toast.makeText(AtyTimeLine.this, R.string.fail_to_load_timeline, Toast.LENGTH_LONG).show(); } }, new Timeline.Failcallback() { @Override public void onFail(int errorCode) { // TODO Auto-generated method stub //pd.dismiss(); if (errorCode == Config.STATUS_INVALID_TOKEN) { startActivity(new Intent(AtyTimeLine.this,AtyLogin.class)); finish(); }else { Toast.makeText(AtyTimeLine.this, R.string.fail_to_load_timeline, Toast.LENGTH_LONG).show(); } } }); }
相关文章推荐
- android 网络获取json并且显示(2)
- android 网络获取json并且显示(2)
- Android中数据文件解析(Json解析【从服务器端获取数据并且解析,显示在客户端上面】)
- Android中数据文件解析(Json解析【从服务器端获取数据并且解析,显示在客户端上面】)
- Android中数据文件解析(Json解析【从服务器端获取数据并且解析,显示在客户端上面】)
- Android中数据文件解析(Json解析【从服务器端获取数据并且解析,显示在客户端上面】)
- Android中数据文件解析(Json解析【从服务器端获取数据并且解析,显示在客户端上面】)
- 转:Android中数据文件解析(Json解析【从服务器端获取数据并且解析,显示在客户端上面】)
- Android中数据文件解析(Json解析【从服务器端获取数据并且解析,显示在客户端上面】)
- Json--Android中数据文件解析(Json解析--从服务器端获取数据并且解析,显示在客户端上面)
- Android如何获取网络上的图片并且显示在ImageView上
- Android中数据文件解析(Json解析【从服务器端获取数据并且解析,显示在客户端上面】)
- Android中数据文件解析(Json解析【从服务器端获取数据并且解析,显示在客户端上面】)
- Android中数据文件解析(Json解析【从服务器端获取数据并且解析,显示在客户端上面】)
- android:通过url向网络端获取json格式数据并解析显示
- Android中数据文件解析(Json解析【从服务器端获取数据并且解析,显示在客户端上面】)
- Android中数据文件解析(Json解析【从服务器端获取数据并且解析,显示在客户端上面】)
- Android ListView从网络获取图片及文字显示(转)
- Android ListView从网络获取图片及文字显示
- android通过httpClient请求获取JSON数据并且解析