Json解析
2016-08-26 12:12
176 查看
package com.example.lianviewpager; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.List; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import xlistview.XListView; import xlistview.XListView.IXListViewListener; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.view.animation.Animation; import android.view.animation.AnimationSet; import android.view.animation.LayoutAnimationController; import android.view.animation.TranslateAnimation; import android.widget.ImageView; import android.widget.ImageView.ScaleType; import android.widget.ListView; import android.widget.RadioButton; import com.example.lianviewpager.bean.Bean; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; public class MainActivity extends Activity implements IXListViewListener { private List<Bean> lists=new ArrayList<Bean>(); private List<RadioButton> rb=new ArrayList<RadioButton>(); private ArrayList<String> list = new ArrayList<String>(); private ViewPager vp; private ImageLoader il; private int i1=1; private int i2=2; private int i; private String url = "http://c.m.163.com/nc/article/headline/T1348647909107/0-20.html"; private Handler handler = new Handler() { private Bean bean; private Myadapter adapter; public void handleMessage(Message msg) { String request = (String) msg.obj; Log.i("log", msg.toString()); switch (msg.what) { case 0: int c = vp.getCurrentItem(); c++; vp.setCurrentItem(c); handler.sendEmptyMessageDelayed(0, 2000); break; case 1: try { if(i==i1){ lists.clear(); } JSONObject jo = new JSONObject(request); JSONArray jsonArray = jo.getJSONArray("T1348647909107"); for (int i = 0; i < jsonArray.length(); i++) { bean = new Bean(); JSONObject jsonObject = jsonArray.getJSONObject(i); String title = jsonObject.getString("title"); String imgsrc = jsonObject.getString("imgsrc"); String digest = jsonObject.getString("digest"); if (jsonObject.has("ads")) { JSONArray jsonArray2 = jsonObject .getJSONArray("ads"); for (int j = 0; j < jsonArray2.length(); j++) { JSONObject jsonObject2 = jsonArray2 .getJSONObject(j); String string = jsonObject2.getString("imgsrc"); list.add(string); } } if(jsonObject.has("imgextra")){ ArrayList<String> imgextra_image=new ArrayList<String>(); JSONArray jsonArray2 = jsonObject.getJSONArray("imgextra"); for(int k=0;k<jsonArray2.length();k++){ JSONObject jsonObject2 = jsonArray2.getJSONObject(k); String imgextra_imgsrc = jsonObject2.getString("imgsrc"); imgextra_image.add(imgextra_imgsrc); } bean.setPan(true); bean.setImgextra_image(imgextra_image); } bean.setImgsrc(imgsrc); bean.setTitle(title); bean.setDigest(digest); lists.add(bean); } //load(); if(adapter==null){ adapter = new Myadapter(MainActivity.this,lists); lv.setAdapter(adapter); } vp.setAdapter(new PagerAdapter() { @Override public boolean isViewFromObject(View arg0, Object arg1) { // TODO Auto-generated method stub return arg0 == arg1; } @Override public int getCount() { // TODO Auto-generated method stub return Integer.MAX_VALUE; } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView iv = new ImageView(MainActivity.this); il.displayImage(list.get(position % list.size()), iv); iv.setScaleType(ScaleType.FIT_XY); container.addView(iv); return iv; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } }); vp.setCurrentItem(list.size() * 5000); vp.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { for(int i=0;i<list.size();i++){ if(i==arg0%list.size()){ rb.get(i).setChecked(true); }else{ rb.get(i).setChecked(false); } } } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { // TODO Auto-generated method stub } @Override public void onPageScrollStateChanged(int arg0) { // TODO Auto-generated method stub } }); handler.sendEmptyMessageDelayed(0, 2000); } catch (JSONException e) { e.printStackTrace(); } break; case 2: load(); break; } }; }; private XListView lv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); il = ImageLoader.getInstance(); ImageLoaderConfiguration ilc = new ImageLoaderConfiguration.Builder(MainActivity.this).build(); il.init(ilc); setContentView(R.layout.activity_main); lv = (XListView) findViewById(R.id.lv); vp = (ViewPager) findViewById(R.id.vp); lv.setPullLoadEnable(true); lv.setXListViewListener(this); RadioButton r1=(RadioButton) findViewById(R.id.r1); RadioButton r2=(RadioButton) findViewById(R.id.r2); RadioButton r3=(RadioButton) findViewById(R.id.r3); RadioButton r4=(RadioButton) findViewById(R.id.r4); RadioButton r5=(RadioButton) findViewById(R.id.r5); rb.add(r1); rb.add(r2); rb.add(r3); rb.add(r4); rb.add(r5); getJson(); AnimationSet as=new AnimationSet(this, null); LayoutAnimationController controller=new LayoutAnimationController(as); Animation translateIn = new TranslateAnimation(-400, 0, 0, 0); translateIn.setDuration(1500); translateIn.setFillAfter(true); as.addAnimation(translateIn); lv.setLayoutAnimation(controller); } private void getJson() { new Thread(new Runnable() { @Override public void run() { try { URL urls = new URL(url); HttpURLConnection huc = (HttpURLConnection) urls .openConnection(); huc.setReadTimeout(5000); huc.setConnectTimeout(5000); huc.setRequestMethod("GET"); if (huc.getResponseCode() == 200) { InputStream inputStream = huc.getInputStream(); String str; StringBuffer sb = new StringBuffer(); BufferedReader br = new BufferedReader( new InputStreamReader(inputStream)); while ((str = br.readLine()) != null) { sb.append(str); } Message obtain = Message.obtain(); obtain.obj = sb.toString(); obtain.what = 1; handler.sendMessage(obtain); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }).start(); } public void load(){ lv.stopRefresh(); lv.stopLoadMore(); lv.setRefreshTime("刚刚"); } @Override public void onRefresh() { //i=i1; //getJson(); handler.sendEmptyMessageDelayed(2, 2000); } @Override public void onLoadMore() { //i=i2; //getJson(); } }
相关文章推荐
- 浅谈json以及一些常用的解析
- android Json数据解析
- Android_JSON解析
- VC++ 解析JSON字串
- python 递归解析json
- java解析json文本
- Android之解析Json数据 .
- 通过解析xml获得json格式,动态解析json
- fastjson解析json数据
- JSON解析实例——使用Json-lib
- (二)初识springboot之使用fastjson解析数据(解决乱码及简单配置)
- App数据格式之解析Json
- 在android中解析json数据格式字符串
- 10分钟掌握XML、JSON及其解析(下)
- 3秒显示下一条及json数组解析
- 不操作数据库,js解析json三级联动
- 解析JSON字串的方法有eval,json_parse,JSON.parse
- C++的Json解析库:jsoncpp和boost .
- OC-Json文件解析-Json网址学习
- 前台解析有后台传过来的json数据时报错 Cannot use 'in' operator to search for 'length' in......