当我们从接口中获取到我们所需要的数据(我们以JSON数据为例)时,如何将数据封装成对象以及从对象中获取出来呢?
接下来我们看下这个流程是怎么做的:
首先,我们将获取的JSON数据用对象来存储:
try {
if (null != json) {
JSONObject newsObject = new JSONObject(json);
JSONObject jsonObject = newsObject.getJSONObject("data");
JSONArray blogsJson = jsonObject.getJSONArray("blogs");
for (int i = 0; i < blogsJson.length(); i++) {
JSONObject newsInfoLeftObject = blogsJson.getJSONObject(i);
DuitangInfo newsInfo1 = new DuitangInfo();
newsInfo1.setAlbid(newsInfoLeftObject.isNull("albid") ? "" : newsInfoLeftObject.getString("albid"));
newsInfo1.setIsrc(newsInfoLeftObject.isNull("isrc") ? "" : newsInfoLeftObject.getString("isrc"));
newsInfo1.setMsg(newsInfoLeftObject.isNull("msg") ? "" : newsInfoLeftObject.getString("msg"));
newsInfo1.setHeight(newsInfoLeftObject.getInt("iht"));
duitangs.add(newsInfo1);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
其次,我们需要在自定义的adapter中将数据获取出来:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
DuitangInfo duitangInfo = mInfos.get(position);
if (convertView == null) {
LayoutInflater layoutInflator = LayoutInflater.from(parent.getContext());
convertView = layoutInflator.inflate(R.layout.infos_list, null);
holder = new ViewHolder();
holder.imageView = (ScaleImageView) convertView.findViewById(R.id.news_pic);
holder.contentView = (TextView) convertView.findViewById(R.id.news_title);
convertView.setTag(holder);
}
holder = (ViewHolder) convertView.getTag();
holder.imageView.setImageWidth(duitangInfo.getWidth());
holder.imageView.setImageHeight(duitangInfo.getHeight());
holder.contentView.setText(duitangInfo.getMsg());
mImageFetcher.loadImage(duitangInfo.getIsrc(), holder.imageView);
return convertView;
}
总结:我之前开发的时候直接用ArrayList<Map<String,Object>>以键值对的方式来保存和获取数据,但我们开发的时候需要总结好的编码风格,并运用到我们的开发中来。