TabLayout与listview

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:background="@drawable/back"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:id="@+id/lout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <android.support.design.widget.TabLayout
            android:layout_weight="9"
            android:id="@+id/tab_out"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            app:tabGravity="center"
            app:tabIndicatorColor="@color/colorAccent"
            app:tabMode="scrollable"
            app:tabSelectedTextColor="@color/colorPrimaryDark"
            app:tabTextColor="@color/colorPrimary"></android.support.design.widget.TabLayout>
        <Button
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:text="管理"
            android:id="@+id/btn_guan"/>
    </LinearLayout>

    <android.support.v4.view.ViewPager
        android:layout_below="@+id/lout"
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></android.support.v4.view.ViewPager>
</RelativeLayout>


-------------------------------------------------------------------------------------------------------------------------

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ptr="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent" android:layout_height="match_parent">

    <com.handmark.pulltorefresh.library.PullToRefreshListView
        ptr:ptrDrawable="@drawable/default_ptr_flip"
        ptr:ptrAnimationStyle="flip"
        ptr:ptrHeaderBackground="#383838"
        ptr:ptrHeaderTextColor="#FFFFFF"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/plv"></com.handmark.pulltorefresh.library.PullToRefreshListView>

</RelativeLayout>

-------------------------------------------------------------------------------------------------------------------

package com.example.myproject.fragment;

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
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.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

import com.example.myproject.MyActivity_GuanLi;
import com.example.myproject.R;
import com.example.myproject.base.BaseFragment;
import com.example.myproject.bean.DataBean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by John on 2018/4/26 0026.
 */

public class FragmentShou extends BaseFragment {

    private View view;
    private TabLayout tabLayout;
    private ViewPager viewPager;
    private ArrayList<DataBean> listData;
    private Button btn_gl;

    @Override
    public View getFragmentView(LayoutInflater inflater, @Nullable ViewGroup container) {
        view = inflater.inflate(R.layout.fragment_shou,container,false);
        return view;
    }

    @Override
    public void initView() {
        //获取资源id
        tabLayout = view.findViewById(R.id.tab_out);
        viewPager = view.findViewById(R.id.viewPager);
        btn_gl = view.findViewById(R.id.btn_guan);
    }

    @Override
    public void initData() {
        //创建集合用于存储菜单栏数据
        listData = new ArrayList<>();

        //初始化菜单栏数据
        initMenus();

        //设置适配器
        setShiPQ();

        tabLayout.setupWithViewPager(viewPager);
        viewPager.setOffscreenPageLimit(listData.size());//设置加载全部页面

        //添加点击事件
        btn_gl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //跳转页面
                Intent intent = new Intent(getActivity(),MyActivity_GuanLi.class);
                Bundle bundle = new Bundle();
                bundle.putSerializable("jihe",(Serializable)listData);
                intent.putExtras(bundle);
                startActivityForResult(intent,2000);
            }
        });
    }

    private void setShiPQ() {
        viewPager.setAdapter(new FragmentPagerAdapter(getChildFragmentManager()) {
            @Override
            public CharSequence getPageTitle(int position) {
                return listData.get(position).getName();
            }

            @Override
            public Fragment getItem(int position) {
                ContentFragment fragment = new ContentFragment();
                //传参
                Bundle bundle = new Bundle();
                bundle.putString("url",listData.get(position).getMyUrl());
                fragment.setArguments(bundle);
                return fragment;
            }

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

    private void initMenus() {
        listData.add(new DataBean("推荐","http://api.tianapi.com/nba/?key=55acaf346503d8d5f98af8dec90ceb01&num=10"));
        listData.add(new DataBean("热点","http://api.tianapi.com/it/?key=55acaf346503d8d5f98af8dec90ceb01&num=10"));
        listData.add(new DataBean("北京","http://api.tianapi.com/guonei/?key=55acaf346503d8d5f98af8dec90ceb01&num=10"));
        listData.add(new DataBean("视频","http://api.tianapi.com/vr/?key=55acaf346503d8d5f98af8dec90ceb01&num=10"));
        listData.add(new DataBean("社会","http://api.tianapi.com/social/?key=55acaf346503d8d5f98af8dec90ceb01&num=10"));
        listData.add(new DataBean("科技","http://api.tianapi.com/keji/?key=55acaf346503d8d5f98af8dec90ceb01&num=10"));
        listData.add(new DataBean("汽车","http://api.tianapi.com/startup/?key=55acaf346503d8d5f98af8dec90ceb01&num=10"));
        listData.add(new DataBean("体育","http://api.tianapi.com/tiyu/?key=55acaf346503d8d5f98af8dec90ceb01&num=10"));
        listData.add(new DataBean("财经","http://api.tianapi.com/world/?key=55acaf346503d8d5f98af8dec90ceb01&num=10"));
        listData.add(new DataBean("娱乐","http://api.tianapi.com/huabian/?key=55acaf346503d8d5f98af8dec90ceb01&num=10"));

    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        //判断结果码  请求码
        if(requestCode == 2000 && resultCode == 1000){
            //接受传过来的值
            listData.clear();
            ArrayList<DataBean> xlist = (ArrayList<DataBean>) data.getSerializableExtra("xjh");
            listData.addAll(xlist);
            for (int i = 0; i < listData.size(); i++) {
                Log.d("cccc", "onActivityResult: "+listData.get(i).getMyUrl());
            }
            setShiPQ();
        }
    }
}

-----------------------------------------------------------------------------------------------------------------------------

package com.example.myproject.fragment;

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.example.myproject.R;
import com.example.myproject.base.BaseFragment;
import com.example.myproject.base.MyBase_List;
import com.example.myproject.db.UserDao;
import com.example.myproject.gson.MyGson;
import com.example.myproject.utile.NetStateUtil;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by John on 2018/4/26 0026.
 */

public class ContentFragment extends BaseFragment {

    private View view;
    private TextView textView;
    private PullToRefreshListView plv;

    private int pageIndex = 1;
    private int clickType = 1;
    private String url;
    private String myUrl;

    private List<MyGson.NewslistBean> newslists = new ArrayList<>();
    private MyBase_List base_list;
    private UserDao userDao;

    @Override
    public View getFragmentView(LayoutInflater inflater, @Nullable ViewGroup container) {
        view = inflater.inflate(R.layout.contentfragment,container,false);
        return view;
    }

    @Override
    public void initView() {
        //获取资源id
        plv = view.findViewById(R.id.plv);
    }

    @Override
    public void initData() {

        //创建数据库的逻辑操作类
        userDao = new UserDao(getActivity());


        //初始化PullToRefreshListView
        initPlv();
        //接收数据
        Bundle arguments = getArguments();
        if(arguments!=null){
            url = arguments.getString("url");
            //textView.setText(url);
            Log.d("zzzz", "doInBackground: "+url);
            //请求数据
            requestDataFunction();
        }


    }

    private void requestDataFunction() {
        myUrl = url+"&page="+pageIndex;
        //判断有没有网络
        if(NetStateUtil.isConn(getActivity())){
            new MyTask().execute(myUrl);

        }else {
            Toast.makeText(getActivity(), "当前没有网络", Toast.LENGTH_SHORT).show();
            //从数据库中取数据
            String selects = userDao.selects(myUrl);
            //展示数据
            showData(selects);
        }


    }

    private void initPlv() {
        plv.setMode(PullToRefreshBase.Mode.BOTH);
        plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
                //下拉刷新
                pageIndex = 1;
                clickType = 1;
                myUrl = url+"&page="+pageIndex;
                //请求数据
                requestDataFunction();
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
                //上拉加载
                pageIndex ++;
                clickType = 2;
                myUrl = url+"&page="+pageIndex;
                //请求数据
                requestDataFunction();
            }
        });
    }
    class MyTask extends AsyncTask<String,Void,String>{

        @Override
        protected String doInBackground(String... strings) {
            String string = strings[0];
            Log.d("zzzz", "doInBackground: "+string);
            try {
                URL url = new URL(strings[0]);
                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                urlConnection.setRequestMethod("GET");
                urlConnection.setConnectTimeout(5000);
                urlConnection.setReadTimeout(5000);
                if(urlConnection.getResponseCode() == 200){
                    InputStream inputStream = urlConnection.getInputStream();
                    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
                    int len;
                    byte[] b = new byte[1024];
                    while ((len = inputStream.read(b))!=-1){
                        outputStream.write(b,0,len);
                    }
                    return outputStream.toString();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            //网数据库中存数据
            userDao.add(myUrl,s);

            //展示数据
            showData(s);
        }
    }

    private void showData(String s) {
        if (!s.equals("")) {
            Gson gson = new Gson();
            MyGson myGson = gson.fromJson(s, MyGson.class);
            List<MyGson.NewslistBean> newslist = myGson.getNewslist();
            if(newslist==null){
                Toast.makeText(getActivity(), "没有数据了", Toast.LENGTH_SHORT).show();
            }else {
                if(clickType == 1){
                    newslists.clear();
                }
                newslists.addAll(newslist);
                //设置适配器
                setShiPeiQi();
            }

        }
        //关闭头尾视图
        plv.onRefreshComplete();
    }

    private void setShiPeiQi() {
        //newslists
        if (base_list==null) {
            base_list = new MyBase_List(getActivity(),newslists);
            plv.setAdapter(base_list);
        } else {
            base_list.notifyDataSetChanged();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_14876513/article/details/80170937