关闭

Json解析网络数据+listview展示跳转

标签: androidjson
383人阅读 评论(0) 收藏 举报
分类:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <HorizontalScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/tv_recommend"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="30dp"
                android:layout_weight="1"
                android:text="推荐"
                android:textSize="20sp" />

            <TextView
                android:id="@+id/tv_history"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="30dp"
                android:layout_weight="1"
                android:text="野史"
                android:textSize="20sp" />

            <TextView
                android:id="@+id/tv_seraglio"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="30dp"
                android:layout_weight="1"
                android:text="后宫"
                android:textSize="20sp" />

            <TextView
                android:id="@+id/tv_decode"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="30dp"
                android:layout_weight="1"
                android:text="解密"
                android:textSize="20sp" />
        </LinearLayout>
    </HorizontalScrollView>

    <android.support.v4.view.ViewPager
        android:id="@+id/vp_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </android.support.v4.view.ViewPager>

</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:orientation="vertical"
    >

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

    <LinearLayout
        android:id="@+id/sourceandtime"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/source"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <TextView
            android:id="@+id/time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <TextView
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/sourceandtime"
        android:textSize="18sp" />

</LinearLayout>
<?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/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="5"
        android:textSize="22sp" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/ic_launcher" />

</LinearLayout>
<?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="vertical" >
    <ListView 
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        ></ListView>

</LinearLayout>
public class Data {
    public List<News> array;
    public class News implements Serializable{

        public String title;
        public String content;
        public String type;
        public String source;
        public String time;

    }
}
public abstract class BaseFragment extends Fragment {

    private ListView lv;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.base_fragment, null);
        lv = (ListView) view.findViewById(R.id.lv);
        return view;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        String path = "http://172.17.29.120/localuser/ljy/xuanxuan/datas.json";
        MyAsyncTask asyncTask = new MyAsyncTask();
        // 请求网络数据
        asyncTask.execute(path);
    }

    // 自定义异步类
    class MyAsyncTask extends AsyncTask<String, String, Data> {

        @Override
        protected Data doInBackground(String... params) {
            Data data = getData(params[0]);
            return data;
        }

        private Data getData(String string) {
            try {
                DefaultHttpClient client = new DefaultHttpClient();
                HttpGet get = new HttpGet(string);
                System.out.println("2=========");
                HttpResponse response = client.execute(get);
                if (response.getStatusLine().getStatusCode() == 200) {
                    HttpEntity entity = response.getEntity();
                    InputStream is = entity.getContent();
                    InputStreamReader isr = new InputStreamReader(is);

                    Gson gson = new Gson();
                    Data data = gson.fromJson(isr, Data.class);
                    System.out.println("data===" + data.toString());
                    System.out.println(data.array.get(0).time
                            + data.array.get(0).title + data.array.get(0).type);
                    return data;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Data data) {
            super.onPostExecute(data);

            List<News> array = data.array;
            final List<News> list = new ArrayList<Data.News>();
            int type = getType();
            switch (type) {
            case 0:
                list.clear();
                for (News news : array) {
                    if (news.type.equals("推荐")) {
                        list.add(news);
                    }
                }
                break;
            case 1:
                list.clear();
                for (News news : array) {
                    if (news.type.equals("野史")) {
                        list.add(news);
                    }
                }
                break;
            case 2:
                list.clear();
                for (News news : array) {
                    if (news.type.equals("后宫")) {
                        list.add(news);
                    }
                }
                break;
            case 3:
                list.clear();
                for (News news : array) {
                    if (news.type.equals("解密")) {
                        list.add(news);
                    }
                }
                break;

            default:
                break;
            }
            lv.setAdapter(new MyAdapter(getActivity(), list));
            //为listview设置监听
            lv.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1,
                        int arg2, long arg3) {
                    Intent intent=new Intent(getActivity(),DetailActivity.class);
                    intent.putExtra("news", list.get(arg2));
                    startActivity(intent);
                }

            });
        }

    }

    public abstract int getType();
}
public class MyFragment extends BaseFragment{

    private int type;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        type=getArguments().getInt("type",0);
    }
    public static Fragment getInstance(int type){
        MyFragment frag = new MyFragment();
        Bundle bd = new Bundle();
        bd.putInt("type", type);
        frag.setArguments(bd);
        return frag;
    }
    @Override
    public int getType() {
        return type;
    }



}
public class MyAdapter extends BaseAdapter {
    Context context;
    List<News> list;



    public MyAdapter(Context context, List<News> list) {
        super();
        this.context = context;
        this.list = list;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return list.size();
    }

    @Override
    public Object getItem(int arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder=null;
        if(convertView==null){
            holder=new ViewHolder();
            convertView=View.inflate(context,R.layout.lv_item,null);
            TextView title = (TextView) convertView.findViewById(R.id.title);
            holder.title=title;
            convertView.setTag(holder);
        }else{
            holder = (ViewHolder) convertView.getTag();
        }
        holder.title.setText(list.get(position).title);
        return convertView;
    }

    class ViewHolder{
        TextView title;
    }
}
public class MainActivity extends FragmentActivity implements OnClickListener {

    private ViewPager vp;
    private TextView tv_recommend;
    private TextView tv_history;
    private TextView tv_seraglio;
    private TextView tv_decode;
    private List<TextView> tvList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        vp = (ViewPager) findViewById(R.id.vp_main);
        tv_recommend = (TextView) findViewById(R.id.tv_recommend);
        tv_history = (TextView) findViewById(R.id.tv_history);
        tv_seraglio = (TextView) findViewById(R.id.tv_seraglio);
        tv_decode = (TextView) findViewById(R.id.tv_decode);

        tvList = new ArrayList<TextView>();
        tv_recommend.setTextColor(Color.RED);
        tvList.add(tv_recommend);
        tvList.add(tv_history);
        tvList.add(tv_seraglio);
        tvList.add(tv_decode);
        for (TextView tv : tvList) {
            tv.setOnClickListener(this);
        }
        vp.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {

            @Override
            public int getCount() {
                return 4;
            }

            @Override
            public Fragment getItem(int arg0) {
                Fragment fragment = MyFragment.getInstance(arg0);
                return fragment;
            }

        });
        vp.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int arg0) {
                for (int i = 0; i < tvList.size(); i++) {
                    if (arg0==i) {
                        tvList.get(i).setTextColor(Color.RED);
                    }else{
                        tvList.get(i).setTextColor(Color.BLUE);
                    }
                }
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {

            }

            @Override
            public void onPageScrollStateChanged(int arg0) {

            }
        });

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.tv_recommend:
            vp.setCurrentItem(0);
            break;
        case R.id.tv_history:
            vp.setCurrentItem(1);
            break;
        case R.id.tv_seraglio:
            vp.setCurrentItem(2);
            break;
        case R.id.tv_decode:
            vp.setCurrentItem(3);
            break;

        }
    }
}
public class DetailActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);

        // 找控件

        TextView title = (TextView) findViewById(R.id.title);
        TextView source = (TextView) findViewById(R.id.source);
        TextView time = (TextView) findViewById(R.id.time);
        TextView content = (TextView) findViewById(R.id.content);

        // 得到意图对象
        Intent intent = getIntent();
        News news = (News) intent.getSerializableExtra("news");
        // 为控件赋值
        title.setText(news.title);
        source.setText(news.source);
        time.setText(news.time);
        content.setText(news.content);
    }

}
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

json数据解析并显示在listView上

package com.example.josn_test; import java.util.ArrayList; import java.util.List; import org.json.JSONArray; import org.json.JSONException; import o...
  • qq_28107395
  • qq_28107395
  • 2016-03-23 09:17
  • 1437

解析网络json数据并展示到ListView上

网易新闻看起来很简洁,左边是一张图片,右边是一些文字信息,这样的排版是十分常见的,给人的感觉就是简洁明了,下面通过解析网络json数据并展示到ListView上,来实现同样的效果,效果图如下: 1.数据来源于网上json数据的解析,网址为http://mrobot.pcauto.com.cn...
  • ljw124213
  • ljw124213
  • 2016-09-14 21:46
  • 3697

获取服务器json数据并解析显示listview上

使用okhttp获取服务器json数据并解析出来显示到listview上
  • qq_26650589
  • qq_26650589
  • 2017-04-20 11:48
  • 2735

解析从网络获取的json,显示到listview列表上

/************************/-------->         MainActivity   类: package com.wlxstq; import java...
  • Xuqiang158
  • Xuqiang158
  • 2016-04-05 09:54
  • 780

json数据解析并显示在listView上

package com.example.josn_test; import java.util.ArrayList; import java.util.List; import org.json.JSONArray; import org.json.JSONException; import o...
  • qq_28107395
  • qq_28107395
  • 2016-03-23 09:17
  • 1437

Android学习 (十八) 用GSON解析JSON数据并在ListView中显示

这几天一直在学习用GSON解析JSON并通过自定义的Adapter显示在ListView上面,现在来做一些记录。 在Android项目中添加GSON的步骤在上一篇博客提到过。这是一个实现目标的大体思路:这里,说明一下。JSON文件里面的数据关键字需要和你自定义类里面的变量对应。这是我项目里面的ja...
  • myGFZ
  • myGFZ
  • 2016-11-23 16:33
  • 1585

Android开发笔记之接口数据通过listView显示

使用Listview来完成提供接口的数据展示
  • u012416955
  • u012416955
  • 2016-05-20 23:04
  • 1741

请求网络数据,解析JSON,显示在listview上(采用thread,handler)

请求网络数据,解析JSON,显示在listview上(采用thread,handler,message)实现。 首先我们应该要之道,thread,handler,message,looper的关系。好吧,这个我就不多说了,不懂的百度下吧。。 首先我们开启一个线程。 new Thread(new...
  • guai25qiaokn
  • guai25qiaokn
  • 2014-08-06 12:10
  • 579

json解析,异步下载(listview仅滑动时加载)Demo总结

异步加载的练习demo 主要涉及知识点: 1.解析json格式数据,主要包括图片,文本 2.使用线程和AsynTask俩种异步方式从网络下载图片 3.handler的使用 4.使用Lru缓存算法 5.改进加载:仅在listview滑动停止后才加载可见项,滑动中不加载
  • XSF50717
  • XSF50717
  • 2015-10-10 21:30
  • 1492

Android通过请求网络数据实现ListView,ListView的优化、图片的缓存、子控件的点击事件。

对Android初学者来说为ListView自定义Adapter和实现item点击是一个比较生疏的内容,而且理解起来也不是太容易,尤其是涉及到ListView的优化问题的时候。本篇内容会简单的介绍下如何实现自定义Adapter、如何实现Item的点击事件以及ListView的一些优化问题。
  • qq_20521573
  • qq_20521573
  • 2016-07-24 16:58
  • 1345
    个人资料
    • 访问:5610次
    • 积分:218
    • 等级:
    • 排名:千里之外
    • 原创:15篇
    • 转载:0篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论