TabLayout + Fragment + 网络请求

来源:互联网 发布:陈国良院士 知乎 编辑:程序博客网 时间:2024/06/05 08:14

TabLayout所需要的依赖


compile 'com.android.support:design:23.4.0'


手动添加     import android.support.design.widget.TabLayout




TabLaout的MainActivity

import android.os.Bundle;import android.support.design.widget.TabLayout;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    TabLayout ta;    private ViewPager vp;    private List<String> list;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //初始化控件        vp = (ViewPager) findViewById(R.id.vp);        ta= (TabLayout) findViewById(R.id.tab);                //创建集合        list=new ArrayList<>();                //添加数据        list.add("头条");        list.add("社会");        list.add("国内");        list.add("国际");        list.add("娱乐");        list.add("体育");        list.add("军事");        list.add("科技");        list.add("财经");        list.add("时尚");                //监听事件        vp.setAdapter(new FragmentPagerAdapter(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","top");                }else if (list.get(position).equals("社会")){                    bundle.putString("name","shehui");                }else if (list.get(position).equals("国内")){                    bundle.putString("name","guonei");                }else if (list.get(position).equals("国际")){                    bundle.putString("name","guoji");                }else if (list.get(position).equals("娱乐")){                    bundle.putString("name","yule");                }else if (list.get(position).equals("体育")){                    bundle.putString("name","tiyu");                }else if (list.get(position).equals("军事")){                    bundle.putString("name","junshi");                }else if (list.get(position).equals("科技")){                    bundle.putString("name","keji");                }else if (list.get(position).equals("财经")){                    bundle.putString("name","caijing");                }else if (list.get(position).equals("时尚")){                    bundle.putString("name","shishang");                }                fragments.setArguments(bundle);                return fragments;            }            @Override            public int getCount() {                return list.size();            }        });        //绑定        ta.setupWithViewPager(vp);    }}



Fragment + 网络请求

import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import com.google.gson.Gson;import com.nostra13.universalimageloader.core.ImageLoader;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.List;public class Fragments extends Fragment {    private ListView lv;    private Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            if (msg.what == 0) {                JsonRootBean bean = (JsonRootBean) msg.obj;                list = bean.getResult().getData();            }        }    };    private List<Data> list;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        //初始化布局        View v = View.inflate(getActivity(), R.layout.ragments, null);        //初始化控件        lv = v.findViewById(R.id.lv);        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) {            He he = null;            if (view == null) {                view = View.inflate(getActivity(), R.layout.tem, null);                he = new He();                he.img = view.findViewById(R.id.img);                he.wenben = view.findViewById(R.id.wenzi);                view.setTag(he);            } else {                he = (He) view.getTag();            }            he.wenben.setText(list.get(i).getTitle());            ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s(), he.img);            return view;        }        class He {            ImageView img;            TextView wenben;        }    }    @Override    public void onActivityCreated(@Nullable Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        Bundle bundle = getArguments();        String string = bundle.getString("name", "top");        getData(string);    }    private void getData(final String string) {        new Thread() {            @Override            public void run() {                String path = "http://v.juhe.cn/toutiao/index?type=" + string + "&key=597b4f9dcb50e051fd725a9ec54d6653";                try {                    URL url = new URL(path);                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();                    connection.setRequestMethod("GET");                    connection.setConnectTimeout(5000);                    connection.setReadTimeout(5000);                    if (connection.getResponseCode() == 200) {                        InputStream stream = connection.getInputStream();                        String json = zhuan(stream, "utf-8");                        Gson gson = new Gson();                        JsonRootBean jsonRootBean = gson.fromJson(json, JsonRootBean.class);                        Message message = Message.obtain();                        message.what = 0;                        message.obj = jsonRootBean;                        handler.sendMessage(message);                    }                } catch (MalformedURLException e) {                    e.printStackTrace();                } catch (IOException e) {                    e.printStackTrace();                }            }        }.start();    }    private String zhuan(InputStream stream, String s) {        try {            InputStreamReader in = new InputStreamReader(stream, s);            BufferedReader re = new BufferedReader(in);            String ss = null;            StringBuilder builder = new StringBuilder();            while ((ss = re.readLine()) != null) {                builder.append(ss);            }            return builder.toString();        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return null;    }}


//关于TabLayout的布局


<?xml version="1.0" encoding="utf-8"?><RelativeLayout 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.support.design.widget.TabLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:id="@+id/tab"        app:tabIndicatorColor="#f5e20d"        app:tabIndicatorHeight="5dp"        app:tabGravity="center"        app:tabSelectedTextColor="#090df7"        app:tabTextColor="#000000"        app:tabMode="scrollable">    </android.support.design.widget.TabLayout></RelativeLayout>