viewpager+fragment

来源:互联网 发布:景观大数据的课程如何 编辑:程序博客网 时间:2024/06/05 02:27
//主界面public class MainActivity extends AppCompatActivity {    //定义全局变量    private ViewPager vp;    private RadioGroup rg;    private RadioButton rb1,rb2,rb3,rb4;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //初始化组件        vp= (ViewPager) findViewById(R.id.vp);        rg= (RadioGroup) findViewById(R.id.rg);        rb1= (RadioButton) findViewById(R.id.rb1);        rb2= (RadioButton) findViewById(R.id.rb2);        rb3= (RadioButton) findViewById(R.id.rb3);        rb4= (RadioButton) findViewById(R.id.rb4);        //设置radiobutton的默认值        rb1.setChecked(true);        //根据radiobutton的选中状态来对viewpager进行设置        rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {            @Override            public void onCheckedChanged(RadioGroup group, int checkedId) {                switch (checkedId){                    case R.id.rb1:                        vp.setCurrentItem(0);                        break;                    case R.id.rb2:                        vp.setCurrentItem(1);                        break;                    case R.id.rb3:                        vp.setCurrentItem(2);                        break;                    case R.id.rb4:                        vp.setCurrentItem(3);                        break;                }            }        });        //给viewpager设置适配器        vp.setAdapter(new MyFrAdapter(getSupportFragmentManager()));        //根据viewpager的状态来选中radiobutton        vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {            @Override            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {            }            @Override            public void onPageSelected(int position) {                switch (position){                    case 0:                        rb1.setChecked(true);                        break;                    case 1:                        rb2.setChecked(true);                        break;                    case 2:                        rb3.setChecked(true);                        break;                    case 3:                        rb4.setChecked(true);                        break;                }            }            @Override            public void onPageScrollStateChanged(int state) {            }        });    }    //定义viewpager的Fragment适配器    class MyFrAdapter extends FragmentPagerAdapter{        public MyFrAdapter(FragmentManager fm) {            super(fm);        }        @Override        public Fragment getItem(int position) {            Fragment fragment=null;            switch (position){                case 0:                    fragment=new Frag01();                    break;                case 1:                    fragment=new Frag02();                    break;                case 2:                    fragment=new Frag03();                    break;                case 3:                    fragment=new Frag04();                    break;            }            return fragment;        }        @Override        public int getCount() {            return 4;        }    }

}

fragment数据页面

** * Created by admin on 2017/08/25/025. */public class Frag01 extends Fragment implements XListView.IXListViewListener {    //定义全局变量    private ViewPager vp;    private XListView xlv;    private LinearLayout ll;    private List<Integer> ivlist;    private List<ImageView> dotlist;    private List<Bean.DataBean.ComicsBean> list;    private ImageView dot;    private MyAdapter adapter;    //定义handler    private Handler handler=new Handler(){        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            int n=msg.what;            switch (n){                case 0:                    int i=vp.getCurrentItem();                    i++;                    vp.setCurrentItem(i);                    sendmsg();                    break;                case 1:                    adapter.notifyDataSetChanged();                    close();            }        }    };    private ByteArrayOutputStream baos;    private String str;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View view=inflater.inflate(R.layout.frag01,null);        //初始化集合        ivlist=new ArrayList<>();        list=new ArrayList<>();        //在无限轮播用的集合里添加图片        ivlist.add(R.drawable.e0);        ivlist.add(R.drawable.e1);        ivlist.add(R.drawable.e2);        //初始化组件        vp= (ViewPager) view.findViewById(R.id.fr_vp);        xlv= (XListView) view.findViewById(R.id.xlv);        ll= (LinearLayout) view.findViewById(R.id.ll);        //使xlistview支持下拉刷新和上拉加载        xlv.setPullRefreshEnable(true);        xlv.setPullLoadEnable(true);        xlv.setXListViewListener(this);        //给viewpager添加适配器        vp.setAdapter(new MyViewAdapter());        //定义viewpager的初始值        vp.setCurrentItem(10000);        //初始化点        indot();        //自动轮播        sendmsg();        //点随着viewpager的播放而改变        viewLinstener();        //定义一个线程来请求网络数据        new Thread(){            @Override            public void run() {                //定义接口                String path="http://api.kkmh.com/v1/daily/comic_lists/0?since=0&gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3NzQyMjQwNjE1LCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjQuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tSG9tZXBhZ2VUYWJOYW1lIjoi54Ot6ZeoIiwiJGxpYl92ZXJzaW9uIjoiMS42LjEzIiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6ImJpZ25veCIsIkZyb21Ib21lcGFnZVVwZGF0ZURhdGUiOjAsIiRzY3JlZW5faGVpZ2h0IjoxMjgwLCJIb21lcGFnZVVwZGF0ZURhdGUiOjAsIlByb3BlcnR5RXZlbnQiOiJSZWFkSG9tZVBhZ2UiLCJGaW5kVGFiTmFtZSI6IuaOqOiNkCIsImFidGVzdF9ncm91cCI6MTEsIiRzY3JlZW5fd2lkdGgiOjcyMCwiJG9zIjoiQW5kcm9pZCIsIlRyaWdnZXJQYWdlIjoiSG9tZVBhZ2UiLCIkY2FycmllciI6IkNoaW5hIE1vYmlsZSIsIiRtb2RlbCI6IlZQaG9uZSIsIiRhcHBfdmVyc2lvbiI6IjMuNi4yIn0sInR5cGUiOiJ0cmFjayIsImRpc3RpbmN0X2lkIjoiQTo2YWRkYzdhZTQ1MjUwMzY1Iiwib3JpZ2luYWxfaWQiOiJBOjZhZGRjN2FlNDUyNTAzNjUiLCJldmVudCI6IlJlYWRIb21lUGFnZSJ9";                try {                    //开始请求数据                    URL url=new URL(path);                    HttpURLConnection connection= (HttpURLConnection) url.openConnection();                    connection.setRequestMethod("GET");                    connection.setDoInput(true);                    connection.setConnectTimeout(3000);                    connection.setReadTimeout(3000);                    int code=connection.getResponseCode();                    //请求成功后读取数据                    if(code==200){                        InputStream is=connection.getInputStream();                        baos=new ByteArrayOutputStream();                        byte[]buffer=new byte[1024];                        int len=-1;                        while((len=is.read(buffer))!=-1){                            baos.write(buffer,0,len);                        }                        str=baos.toString();                    }                } catch (Exception e) {                    e.printStackTrace();                }                //在子线程里解析json串                getActivity().runOnUiThread(new Runnable() {                    @Override                    public void run() {                        Gson gson=new Gson();                        //解析                        Bean bean=gson.fromJson(str,Bean.class);                        list=bean.getData().getComics();                        //实例化适配器                        adapter=new MyAdapter(list,getActivity());                        //显示在xlistView上                        xlv.setAdapter(adapter);                    }                });            }        }.start();        return view;    }    //点的动态变化方法    private void viewLinstener(){        vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {            @Override            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {            }            @Override            public void onPageSelected(int position) {                for(int i=0;i<dotlist.size();i++){                    if(position%ivlist.size()==i){                        dotlist.get(position%ivlist.size()).setImageResource(R.drawable.dot_focuable);                    }else{                        dotlist.get(i).setImageResource(R.drawable.dot_normal);                    }                }            }            @Override            public void onPageScrollStateChanged(int state) {            }        });    }    //初始化点    private void indot(){        dotlist=new ArrayList<>();        if(dotlist!=null){            dotlist.clear();        }        for(int i=0;i<ivlist.size();i++){            dot=new ImageView(getActivity());            if(i==0){                dot.setImageResource(R.drawable.dot_focuable);            }else{                dot.setImageResource(R.drawable.dot_normal);            }            LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(20,20);            params.setMargins(10,0,10,0);            ll.addView(dot,params);            dotlist.add(dot);        }    }    //自动轮播    private void sendmsg(){        handler.sendEmptyMessageDelayed(0,3000);    }    //关闭刷新和加载方法    private void close(){        xlv.stopLoadMore();        xlv.stopRefresh();    }    //下拉刷新    @Override    public void onRefresh() {        list.addAll(0,list);        handler.sendEmptyMessageDelayed(1,2000);    }    //上拉加载    @Override    public void onLoadMore() {        list.addAll(list);        handler.sendEmptyMessageDelayed(1,2000);    }    //viewpager的适配器    class MyViewAdapter extends PagerAdapter{        //定义适配器的长度        @Override        public int getCount() {            return Integer.MAX_VALUE;        }        @Override        public boolean isViewFromObject(View view, Object object) {            return view==object;        }        //添加图片        @Override        public Object instantiateItem(ViewGroup container, int position) {            ImageView iv=new ImageView(getActivity());            iv.setImageResource(ivlist.get(position%ivlist.size()));            container.addView(iv);            return iv;        }        //删除图片        @Override        public void destroyItem(ViewGroup container, int position, Object object) {            container.removeView((View) object);        }    }}
适配器::
/** * Created by admin on 2017/08/25/025. * xlistView 的适配器实现多条目加载 */public class MyAdapter extends BaseAdapter{    //定义全局变量    private List<Bean.DataBean.ComicsBean> list;    private Context context;    private LayoutInflater inflater;    //定义构造器    public MyAdapter(List<Bean.DataBean.ComicsBean> list,Context context){        this.list=list;        this.context=context;        inflater=LayoutInflater.from(context);    }    @Override    public int getCount() {        return list.size();    }    @Override    public Object getItem(int position) {        return list.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    //有几个条目类型    @Override    public int getViewTypeCount() {        return 2;    }    //判断怎样分辨每个条目的位置    @Override    public int getItemViewType(int position) {        if(position%2==0){            return 0;        }else{            return 1;        }    }    //获取布局    @Override    public View getView(int position, View convertView, ViewGroup parent) {        //获取条目类型        int type=getItemViewType(position);        //优化        ViewHolder1 holder1=null;        //进行多条目的判断        switch (type){            //如果为0,则是第一种布局            case 0:                if(convertView==null){                    convertView=inflater.inflate(R.layout.item_01,null);                    holder1=new ViewHolder1();                    holder1.iv= (ImageView) convertView.findViewById(R.id.iv_01);                    holder1.tv= (TextView) convertView.findViewById(R.id.tv_01);                    convertView.setTag(holder1);                }else{                    holder1= (ViewHolder1) convertView.getTag();                }                holder1.tv.setText(list.get(position).getTitle());                ImageLoader.getInstance().displayImage(list.get(position).getCover_image_url(),holder1.iv);                break;            //如果为1,则是第二种布局            case 1:                if(convertView==null){                    convertView=inflater.inflate(R.layout.item_02,null);                    holder1=new ViewHolder1();                    holder1.iv= (ImageView) convertView.findViewById(R.id.iv_02);                    holder1.tv= (TextView) convertView.findViewById(R.id.tv_02);                    convertView.setTag(holder1);                }else{                    holder1= (ViewHolder1) convertView.getTag();                }                holder1.tv.setText(list.get(position).getTitle());                ImageLoader.getInstance().displayImage(list.get(position).getCover_image_url(),holder1.iv);                break;        }        return convertView;    }    //用于优化xlistView    class ViewHolder1{        ImageView iv;        TextView tv;    }}



原创粉丝点击