TabLayout与PullToRefreshListView

来源:互联网 发布:好了歌注 知乎 编辑:程序博客网 时间:2024/05/21 22:56
<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="vertical">        <FrameLayout            android:id="@+id/fl_main"            android:layout_width="match_parent"            android:layout_height="0dp"            android:layout_weight="9" />        <RadioGroup            android:id="@+id/group"            android:layout_width="match_parent"            android:layout_height="0dp"            android:layout_weight="1"            android:gravity="center"            android:orientation="horizontal">            <RadioButton                android:id="@+id/but1"                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:button="@null"                android:gravity="center"                android:text="首页" />            <RadioButton                android:id="@+id/but2"                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:button="@null"                android:gravity="center"                android:text="想法" />            <RadioButton                android:id="@+id/but3"                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:button="@null"                android:gravity="center"                android:text="市场" />            <RadioButton                android:id="@+id/but4"                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:button="@null"                android:gravity="center"                android:text="通知" />            <RadioButton                android:id="@+id/but5"                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:button="@null"                android:gravity="center"                android:text="更多" />        </RadioGroup>    </LinearLayout>    <LinearLayout        android:layout_width="300dp"        android:layout_height="match_parent"        android:background="@color/colorAccent"        android:layout_gravity="start" >        <TextView            android:layout_width="match_parent"            android:text="xxxxx"            android:layout_height="match_parent" />    </LinearLayout></android.support.v4.widget.DrawerLayout>
import android.os.Bundle;import android.support.annotation.IdRes;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentTransaction;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.widget.RadioGroup;import com.bwie.zhoukao2demo.fragment.MainFragment;import java.util.ArrayList;public class MainActivity extends AppCompatActivity {    //定义变量    private ArrayList<Fragment> fragmentList = new ArrayList<Fragment>();    private RadioGroup group;    private FragmentManager supportFragmentManager;    String TAG = "wzq";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //初始化组件        group = (RadioGroup) findViewById(R.id.group);        initFragment();        supportFragmentManager = getSupportFragmentManager();        FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();        fragmentTransaction.add(R.id.fl_main, fragmentList.get(0)).commit();        group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {            //要切换fragment            @Override            public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) {                Log.e(TAG, "onCheckedChanged 点击的id:" + i);                switch (i) {                    case R.id.but1:                        supportFragmentManager.beginTransaction().replace(R.id.fl_main, new MainFragment()).commit();                        Log.e(TAG, "onCheckedChanged: 点击button1");                        break;                    case R.id.but2:                        getSupportFragmentManager().beginTransaction().replace(R.id.fl_main, new MainFragment()).commit();                        Log.e(TAG, "onCheckedChanged: 点击button2");                        break;                    case R.id.but3:                         getSupportFragmentManager().beginTransaction().replace(R.id.fl_main, new MainFragment()).commit();                        Log.e(TAG, "onCheckedChanged: 点击button3" );                        break;                    case R.id.but4:                        getSupportFragmentManager().beginTransaction().replace(R.id.fl_main, new MainFragment()).commit();                        break;                    case R.id.but5:                        getSupportFragmentManager().beginTransaction().replace(R.id.fl_main, new MainFragment()).commit();                        break;                }            }        });    }    //准备好所有的fragment    private void initFragment() {        for (int i = 0; i < 5; i++) {            fragmentList.add(new MainFragment());        }    }}
--------------------------------
<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">    <EditText        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="1"        android:hint="羞羞的铁拳  ,开心麻花" />    <android.support.design.widget.TabLayout        android:id="@+id/tl_titles"        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="1">            </android.support.design.widget.TabLayout>    <android.support.v4.view.ViewPager        android:id="@+id/viewpager"        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="8"></android.support.v4.view.ViewPager></LinearLayout>

public class MainFragment extends Fragment {    private TabLayout tabLayout;    private ViewPager viewpager;    ArrayList fragmentList = new ArrayList<Fragment>();    String[] temp = {"你的 ","我的","他的"};    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.fragment_a, null);        tabLayout = (TabLayout) view.findViewById(R.id.tl_titles);        viewpager = (ViewPager) view.findViewById(R.id.viewpager);        return view;    }    @Override    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {        super.onViewCreated(view, savedInstanceState);        // fragment中嵌套fragment, Manager需要用(getChildFragmentManager())        MPagerAdapter mPagerAdapter = new MPagerAdapter(getChildFragmentManager());        initFragment();        tabLayout.setTabMode(TabLayout.MODE_FIXED);        tabLayout.setupWithViewPager(viewpager);        viewpager.setAdapter(mPagerAdapter);    }    private void initFragment() {        for (int i = 0; i < 3; i++) {            fragmentList.add(new ChildFragment());        }    }    class MPagerAdapter extends FragmentPagerAdapter {        public MPagerAdapter(FragmentManager fm) {            super(fm);        }        @Override        public Fragment getItem(int position) {            return (Fragment) fragmentList.get(position);        }        @Override        public int getCount() {            return fragmentList.size();        }        @Override        public Object instantiateItem(ViewGroup container, int position) {            return super.instantiateItem(container, position);        }        //返回tablayout的标题文字;        @Override        public CharSequence getPageTitle(int position) {            return temp[position];        }    }}
_______________________________________
<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:background="@color/colorPrimary"    android:orientation="vertical">        <com.handmark.pulltorefresh.library.PullToRefreshListView            android:id="@+id/plv"            android:layout_width="match_parent"            android:layout_height="match_parent"/></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">    <com.youth.banner.Banner        android:id="@+id/banner"        android:layout_width="match_parent"        android:layout_height="150dp"        android:orientation="vertical"/></LinearLayout>

public class ChildFragment extends Fragment {    int page = 1;//请求接口的第几页;    String baseUrl = "http://gank.io/api/data/Android/10/";    private PullToRefreshListView plv;    //定义一个总的集合, 以后上拉加载的时候,往这个集合里追加数据,更新适配器;    List<Product.ResultsBean> list = new ArrayList<>();    private MAdapter mAdapter;    private ListView lv;    private Banner banner;    String[] imagUrls = {"http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg",            "http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg",            "http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg",            "http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg",            "http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg"};    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.fragment_b, null);        //这个view是头部        View header_banner = inflater.inflate(R.layout.header_banner, null);        banner = (Banner) header_banner.findViewById(R.id.banner);        plv = (PullToRefreshListView) view.findViewById(R.id.plv);        //得到plv封装的listview,方便我们添加头部        lv = plv.getRefreshableView();        lv.addHeaderView(header_banner);        return view;    }    @Override    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {        super.onViewCreated(view, savedInstanceState);        getNetData(page);//获取list集合的方法;        getNetBannerData();        mAdapter = new MAdapter();//主线程继续往下走,和刚才开启的线程互不影响;0.0001        lv.setAdapter(mAdapter);        plv.setMode(PullToRefreshBase.Mode.BOTH);//上下拉都支持        plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {            @Override            public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {                list.clear();                new MAsync().execute(baseUrl + 1);            }            @Override            public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {                page++;                getNetData(page);            }        });    }    private void getNetData(int page) {        new MAsync().execute(baseUrl + page);    }    private class MAdapter extends BaseAdapter {        @Override        public int getCount() {            return list.size();        }        @Override        public Object getItem(int i) {            return list.get(i);        }        @Override        public long getItemId(int i) {            return i;        }        /**         * 多条目         *         * @param i         * @param view         * @param viewGroup         * @return         */        @Override        public View getView(int i, View view, ViewGroup viewGroup) {            view = View.inflate(getActivity(), R.layout.item01, null);            return view;        }    }    class MAsync extends AsyncTask<String, Void, String> {        @Override        protected String doInBackground(String... strings) {            return NetWordUtils.getNetjson(strings[0]);        }        @Override        protected void onPostExecute(String s) {            super.onPostExecute(s);            Gson gson = new Gson();            Product product = gson.fromJson(s, Product.class);            List<Product.ResultsBean> results = product.getResults();            list.addAll(results);            mAdapter.notifyDataSetChanged();            plv.onRefreshComplete();        }    }    private void getNetBannerData() {        banner.setImages(Arrays.asList(imagUrls));//设置图片集合        banner.setImageLoader(new BannerLoader());        banner.start();    }    /**     * 加载轮播图的类;--Banner的     */    class BannerLoader extends ImageLoader {        //要实现具体如哪个功能或框架来加载图片        @Override        public void displayImage(Context context, Object path, ImageView imageView) {            com.nostra13.universalimageloader.core.ImageLoader instance = com.nostra13.universalimageloader.core.ImageLoader.getInstance();            instance.displayImage((String) path, imageView);        }    }}