tablayout的主页面应用

本文介绍了一个基于Android平台的新闻应用开发实例,包括依赖添加、图片加载配置、数据解析及页面刷新等功能实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

添加依赖

compile 'com.android.support:design:24.2.1'
compile 'com.jwenfeng.pulltorefresh:library:1.0.3'
首先导入图片

public class Img extends Application{
    @Override
    public void onCreate() {

        DisplayImageOptions options = new DisplayImageOptions.Builder().showImageOnLoading(R.mipmap.ic_arrow_down).displayer(new FadeInBitmapDisplayer(2000)).cacheInMemory(true).cacheOnDisc(true).build();
        ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this).defaultDisplayImageOptions(options).threadPoolSize(5).build();
        ImageLoader.getInstance().init(configuration);
        super.onCreate();
    }
}

导入RootBean包  进行解析

ublic class RootBean {

    /**
     * code : 200
     * msg : success
     * newslist : [{"ctime":"2017-06-06 15:26","title":"摩拜接入苹果支付服务 iPhone相机可直接扫码解","description":"移动互联","picUrl":"http://cms-bucket.nosdn.127.net/51d882e6322f4250abcd1b920e870e0f20170606152639.png","url":"http://tech.163.com/17/0606/15/CM8P59DV00097U7R.html"},{"ctime":"2017-06-06 14:50","title":"未按时缴纳物业费 乐视视频员工或被禁止进入大","description":"移动互联","picUrl":"http://cms-bucket.nosdn.127.net/b18b0a61791a4dd98c173b1a59546a7120170606144951.png","url":"http://tech.163.com/17/0606/14/CM8N2S8L00097U7R.html"},{"ctime":"2017-06-06 13:05","title":"特斯拉每卖一辆亏1.3万美元 卖得越多亏得越多","description":"移动互联","picUrl":"http://cms-bucket.nosdn.127.net/0c40a2ad95d94fb9a06c2bf795adf72320170606103032.png","url":"http://tech.163.com/17/0606/13/CM8H2GVP00097U7R.html"},{"ctime":"2017-06-06 13:15","title":"哈佛撤销10名新生录取资格:在网上发布极端言论","description":"移动互联","picUrl":"http://cms-bucket.nosdn.127.net/69a29ab38ba14449889552363992767d20170606110755.png","url":"http://tech.163.com/17/0606/13/CM8HKO7L00097U7R.html"},{"ctime":"2017-06-06 13:18","title":"用环保快递包裹一天可少砍十万棵树,为何推广难","description":"移动互联","picUrl":"http://cms-bucket.nosdn.127.net/84fc17a3f8ac4fcf88fa9e7792e2e33420170606113715.jpeg","url":"http://tech.163.com/17/0606/13/CM8HR7UD00097U7R.html"},{"ctime":"2017-06-06 13:29","title":"Google砍了好多业务,CFO讲述决策制定过程","description":"移动互联","picUrl":"http://cms-bucket.nosdn.127.net/f224332db5384b6d9757762cfa3b132a20170606131831.png","url":"http://tech.163.com/17/0606/13/CM8IDNON00097U7R.html"},{"ctime":"2017-06-06 13:41","title":"Snap1.25亿美元收购基于LBS广告分析的创业公司","description":"移动互联","picUrl":"http://cms-bucket.nosdn.127.net/61bb5ccb12a445fcb492496856ec309020170606134043.png","url":"http://tech.163.com/17/0606/13/CM8J3NG500097U7R.html"},{"ctime":"2017-06-06 11:05","title":"中国互金协会信披平台上线 首批10家试点单位接","description":"移动互联","picUrl":"http://cms-bucket.nosdn.127.net/e9a678aee27840709ec30fe70fbda2e020170606091935.jpeg","url":"http://tech.163.com/17/0606/11/CM8A6EMR00097U7R.html"},{"ctime":"2017-06-06 11:08","title":"B站年轻人:玩鬼畜或圈地自萌,正打破\u201c次元壁","description":"移动互联","picUrl":"http://cms-bucket.nosdn.127.net/0c40a2ad95d94fb9a06c2bf795adf72320170606103032.png","url":"http://tech.163.com/17/0606/11/CM8AD2BS00097U7R.html"},{"ctime":"2017-06-06 11:22","title":"百度搜索\u201c找人\u201d为何搜到行骗公司?","description":"移动互联","picUrl":"http://cms-bucket.nosdn.127.net/69a29ab38ba14449889552363992767d20170606110755.png","url":"http://tech.163.com/17/0606/11/CM8B5U7A00097U7R.html"}]
     */

    private int code;
    private String msg;
    private List<NewslistBean> newslist;

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public List<NewslistBean> getNewslist() {
        return newslist;
    }

    public void setNewslist(List<NewslistBean> newslist) {
        this.newslist = newslist;
    }

    public static class NewslistBean {
        /**
         * ctime : 2017-06-06 15:26
         * title : 摩拜接入苹果支付服务 iPhone相机可直接扫码解
         * description : 移动互联
         * picUrl : http://cms-bucket.nosdn.127.net/51d882e6322f4250abcd1b920e870e0f20170606152639.png
         * url : http://tech.163.com/17/0606/15/CM8P59DV00097U7R.html
         */

        private String ctime;
        private String title;
        private String description;
        private String picUrl;
        private String url;

        public String getCtime() {
            return ctime;
        }

        public void setCtime(String ctime) {
            this.ctime = ctime;
        }

        public String getTitle() {
            return title;
        }

        public void setTitle(String title) {
            this.title = title;
        }

        public String getDescription() {
            return description;
        }

        public void setDescription(String description) {
            this.description = description;
        }

        public String getPicUrl() {
            return picUrl;
        }

        public void setPicUrl(String picUrl) {
            this.picUrl = picUrl;
        }

        public String getUrl() {
            return url;
        }

        public void setUrl(String url) {
            this.url = url;
        }
    }
}

主要实现的页面 和fragment进行刷新  以及网络请求

public class Fragments extends Fragment {
    //全局变量
    List<RootBean.NewslistBean> list;
    MyAdapter myAdapter;

    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            if (msg.what == 0) {
                RootBean bean = (RootBean) msg.obj;
                list = bean.getNewslist();
                myAdapter = new MyAdapter();
                list_view.setAdapter(myAdapter);

            }
        }
    };
    PullToRefreshLayout pull_1;
    private int shu = 10;
    String s;
    private String path;
    ListView list_view;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        //初始化视图
        View v = View.inflate(getActivity(), R.layout.fragment, null);

        //初始化控件
        pull_1 = v.findViewById(R.id.pull_1);

        list_view = v.findViewById(R.id.list_view);

        //获取数据
        Bundle bundle = getArguments();

        s = bundle.getString("name", "social");

        streamToString(s);

        //PullToRefresh的监听事件
        pull_1.setRefreshListener(new BaseRefreshListener() {

            //下拉刷新
            @Override
            public void refresh() {

                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {

                        shu++;
                        path = "http://api.tianapi.com/" + s + "/?key=51f42ae57be18f5f5d7b402ef0bc64aa&num=" + shu;
                        Log.i("aaaaaaaaa", path);
                        streamToString(s);
                        //刷新适配器
                        //myAdapter.notifyDataSetChanged();
                        pull_1.finishRefresh();

                    }
                }, 3000);

            }

            //上拉加载
            @Override
            public void loadMore() {

                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {

                        shu++;
                        path = "http://api.tianapi.com/" + s + "/?key=51f42ae57be18f5f5d7b402ef0bc64aa&num=" + shu;
                        streamToString(s);
                        //刷新适配器
                        //myAdapter.notifyDataSetChanged();
                        pull_1.finishLoadMore();

                    }
                }, 3000);

            }
        });

        return v;

    }

    //适配器
    class MyAdapter extends BaseAdapter {

        @Override
        public int getCount() {
            return list.size();
        }

        @Override
        public Object getItem(int i) {
            return null;
        }

        @Override
        public long getItemId(int i) {
            return 0;
        }

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {

            ViewHolder holder;

            if (view == null) {

                view = view.inflate(getActivity(), R.layout.item, null);

                holder = new ViewHolder();

                holder.image_view = view.findViewById(R.id.image_view);

                holder.text_view = view.findViewById(R.id.text_view);

                view.setTag(holder);

            } else {

                holder = (ViewHolder) view.getTag();

            }

            //获取文字
            holder.text_view.setText(list.get(i).getTitle());

            //获取图片
            ImageLoader.getInstance().displayImage(list.get(i).getPicUrl(), holder.image_view);

            return view;
        }

        class ViewHolder {
            ImageView image_view;
            TextView text_view;
        }

    }

    //网络请求
    private void streamToString(final String s) {

        new Thread() {
            @Override
            public void run() {
                //判断
                if (path == null) {
                    path = "http://api.tianapi.com/" + s + "/?key=51f42ae57be18f5f5d7b402ef0bc64aa&num=" + shu;
                }
                try {
                    //获取接口
                    URL url = new URL(path);
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    //设置
                    connection.setRequestMethod("GET");
                    connection.setReadTimeout(5000);
                    connection.setConnectTimeout(5000);
                    //判断请求码
                    if (connection.getResponseCode() == 200) {
                        InputStream stream = connection.getInputStream();
                        String json = zhuan(stream, "utf-8");
                        //解析
                        Gson gson = new Gson();
                        RootBean fromJson = gson.fromJson(json, RootBean.class);
                        //发送一个消息
                        Message message = Message.obtain();
                        message.what = 0;
                        message.obj = fromJson;
                        handler.sendMessage(message);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                super.run();
            }
        }.start();

    }

    //转码
    private String zhuan(InputStream stream, String s) {
        try {
            InputStreamReader inputStreamReader = new InputStreamReader(stream, s);
            BufferedReader reader = new BufferedReader(inputStreamReader);
            String ss = null;
            StringBuilder builder = new StringBuilder();
            while ((ss = reader.readLine()) != null) {
                builder.append(ss);
            }
            inputStreamReader.close();
            return builder.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

}
要进行展示的tablayout的页面和viewpager绑定(资讯)

public class Zixun extends Fragment {
    //全局变量
    TabLayout tab;
    private List<String> list;
    ViewPager vp;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        //初始化视图
        View v = View.inflate(getActivity(), R.layout.zixun, null);

        //初始化控件
        tab = v.findViewById(R.id.tab);
        vp = v.findViewById(R.id.vp);

        //创建集合
        list = new ArrayList<>();

        //向集合中添加数据
        list.add("数据新闻");
        list.add("快讯");
        list.add("头条");
        list.add("精编公告");
        list.add("美股");
        list.add("港股");
        list.add("基金");
        list.add("理财");

        //ViewPager的监听事件
        vp.setAdapter(new FragmentPagerAdapter(getActivity().getSupportFragmentManager()) {

            @Override
            public CharSequence getPageTitle(int position) {
                return list.get(position);
            }

            @Override
            public Fragment getItem(int position) {

                //获取数据
                Fragments fragments = new Fragments();

                Bundle bundle = new Bundle();

                //判断
                if (list.get(position).endsWith("数据新闻")) {
                    bundle.putString("name", "social");
                } else if (list.get(position).endsWith("快讯")) {
                    bundle.putString("name", "apple");
                } else if (list.get(position).endsWith("头条")) {
                    bundle.putString("name", "world");
                } else if (list.get(position).endsWith("精编公告")) {
                    bundle.putString("name", "huabian");
                } else if (list.get(position).endsWith("美股")) {
                    bundle.putString("name", "tiyu");
                } else if (list.get(position).endsWith("港股")) {
                    bundle.putString("name", "vr");
                } else if (list.get(position).endsWith("基金")) {
                    bundle.putString("name", "football");
                } else if (list.get(position).endsWith("理财")) {
                    bundle.putString("name", "keji");
                }

                //传递数据
                fragments.setArguments(bundle);

                return fragments;
            }

            @Override
            public int getCount() {
                return list.size();
            }

        });

        //绑定
        tab.setupWithViewPager(vp);

        //返回视图
        return v;

    }


}
其余几个fragment的页面

public class Hangqing extends Fragment{
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

      View view = View.inflate(getActivity(), R.layout.hannqing,null);
        return view;
    }
}
首页

public class Shouye extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

       View view= View.inflate(getActivity(), R.layout.shouye,null);
        return view;
    }
}
自选

public class Zixuan extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
     View view  = View.inflate(getActivity(), R.layout.zixuan,null);

        return view;
    }
}
主页面main

public class MainActivity extends AppCompatActivity {

    //全局变量
    Button btn_shouye;
    Button btn_zixuan;
    Button btn_hangqing;
    Button btn_zixun;

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

        //初始化控件
        btn_shouye = (Button) findViewById(R.id.btn_shouye);
        btn_zixuan = (Button) findViewById(R.id.btn_zixuan);
        btn_hangqing = (Button) findViewById(R.id.btn_hangqing);
        btn_zixun = (Button) findViewById(R.id.btn_zixun);

        //初始化界面
        FragmentManager manager = getSupportFragmentManager();

        FragmentTransaction transaction = manager.beginTransaction();

        transaction.replace(R.id.frag, new Shouye());

        transaction.commit();

        //按钮的点击事件
        btn_shouye.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                //首页
                FragmentManager manager = getSupportFragmentManager();

                FragmentTransaction transaction = manager.beginTransaction();

                transaction.replace(R.id.frag, new Shouye());

                transaction.commit();

            }

        });

        //按钮的点击事件
        btn_zixuan.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                //自选页
                FragmentManager manager = getSupportFragmentManager();

                FragmentTransaction transaction = manager.beginTransaction();

                transaction.replace(R.id.frag, new Zixuan());

                transaction.commit();

            }

        });

        //按钮的点击事件
        btn_hangqing.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                //行情页
                FragmentManager manager = getSupportFragmentManager();

                FragmentTransaction transaction = manager.beginTransaction();

                transaction.replace(R.id.frag, new Hangqing());

                transaction.commit();

            }

        });

        //按钮的点击事件
        btn_zixun.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                //资讯页
                FragmentManager manager = getSupportFragmentManager();

                FragmentTransaction transaction = manager.beginTransaction();

                transaction.replace(R.id.frag, new Zixun());

                transaction.commit();

            }

        });

    }
}
//记得添加网络的权限和图片的权限

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
android:name="Img"




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值