RecyclerViewDemo

来源:互联网 发布:cf英雄级武器淘宝网 编辑:程序博客网 时间:2024/06/09 19:19

**额,刚刚进了家外包公司,里面全部做商城类的app。突然就觉得应该写点什么了,没错,今天就是要在这里放一个商城app经常用到的东西,各种fragment的hide和recyclerview的各种item。不吹逼了,上效果图。
**
不会传gif图,好像还只能传一张图

package com.wsp.thinkpad.recyclerviewdemo;import android.content.Context;import android.support.v7.widget.GridLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import com.bumptech.glide.Glide;import com.youth.banner.Banner;import com.youth.banner.BannerConfig;import com.youth.banner.Transformer;import java.net.URL;import java.util.ArrayList;import java.util.List;/** * Created by ${吴心良} * on 2017/4/22. * description: */public class MyRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {    List<String> list=new ArrayList<>();    Context context;    public static int RECYCLER_HEAD=0;//这个我用的是一个bannaer    public static int RECYCLER_FIRST=1;    public static int RECYCLER_SECOND=2;    public static int RECYCLER_FOOT=3;    public MyRecyclerViewAdapter(List<String> list, Context context) {        this.list = list;        this.context = context;    }//这个方法返回item,反正这个很重要    @Override    public int getItemViewType(int position) {        if (position==RECYCLER_HEAD){            return RECYCLER_HEAD;        }        if (position==RECYCLER_FIRST){            return RECYCLER_FIRST;        }        if (position==RECYCLER_SECOND){            return RECYCLER_SECOND;        }        if (position==getItemCount()-1){            return RECYCLER_FOOT;        }        return 4;    }    @Override    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        if (viewType==RECYCLER_HEAD){            View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.head_one,parent,false);            HeadViewHolder holder=new HeadViewHolder(view);            return holder;        } else if (viewType==RECYCLER_FIRST){            View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.head_two,parent,false);            HeadTwoViewHolder holder=new HeadTwoViewHolder(view);            return holder;        }else if (viewType==RECYCLER_SECOND){            View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.head_three,parent,false);            HeadThreeViewHolder holder=new HeadThreeViewHolder(view);            return holder;        }else if (viewType==RECYCLER_FOOT){            View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.footer_view,parent,false);            FooterViewHolder holder=new FooterViewHolder(view);            return holder;        }            View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_normal,parent,false);            MyViewHolder holder =new MyViewHolder(view);            return holder;    }//这里,如果recyclerview用的是GridLayoutManager,那么头部啊底部啊啥的,反正就是要占一整行的东西,就要返回//setLayoutManager(newGridLayoutManager(getActivity().getApplicationContext(),这个值));,这样才能让他占一整行    @Override    public void onAttachedToRecyclerView(RecyclerView recyclerView) {        super.onAttachedToRecyclerView(recyclerView);        RecyclerView.LayoutManager manager = recyclerView.getLayoutManager();        if(manager instanceof GridLayoutManager) {            final GridLayoutManager gridManager = ((GridLayoutManager) manager);            gridManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {                @Override                public int getSpanSize(int position) {                    if (position==RECYCLER_HEAD){                        return 2;//这里返回几就是占几格                    }                    if (position==RECYCLER_FIRST){                        return 2;                    }                    if (position==RECYCLER_SECOND){                        return 2;                    }                    if (position==getItemCount()-1){                        return 2;                    }                    return 1;                }            });        }    }    @Override    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {        if (holder instanceof HeadViewHolder){            //设置banner样式        ((HeadViewHolder)holder).banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE);            //设置图片集合            List<String> images=new ArrayList<String>();            images.add("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png");            images.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1492861364500&di=e1224f18ecaf77f17bb1533137f33432&imgtype=0&src=http%3A%2F%2Fd.5857.com%2Fjurdbm_160518%2F001.jpg");            images.add("https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=3487910287,288553425&fm=23&gp=0.jpg");            ((HeadViewHolder)holder).banner.setImages(images).setImageLoader(new GlideImageLoader());            //设置banner动画效果            ((HeadViewHolder)holder).banner.setBannerAnimation(Transformer.DepthPage);            //设置标题集合(当banner样式有显示title时)            List<String> titles=new ArrayList<String>();            titles.add("打合适的啊加很多");            titles.add("就副局长截止阀就想");            titles.add("加弹夹辣椒水发");            ((HeadViewHolder)holder).banner.setBannerTitles(titles);            //设置自动轮播,默认为true            ((HeadViewHolder)holder).banner.isAutoPlay(true);            //设置轮播时间            ((HeadViewHolder)holder).banner.setDelayTime(2000);            //设置指示器位置(当banner模式中有指示器时)            ((HeadViewHolder)holder).banner.setIndicatorGravity(BannerConfig.CENTER);            //banner设置方法全部调用完毕时最后调用            ((HeadViewHolder)holder).banner.start();        }        if (holder instanceof HeadTwoViewHolder){            ((HeadTwoViewHolder)holder).textView.setText("--------我是第一个啥啥啥");        }        if (holder instanceof HeadThreeViewHolder){            Glide.with(context).load("https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=3356833165,4017320252&fm=23&gp=0.jpg")                    .into(((HeadThreeViewHolder)holder).imageView);        }        if (holder instanceof FooterViewHolder){            ((FooterViewHolder)holder).textView.setText("---------我是最后一个");        }        if (holder instanceof MyViewHolder){            ((MyViewHolder)holder).textView.setText(list.get(position-3));        }    }    @Override    public int getItemCount() {        return list.size();    }    class HeadViewHolder extends RecyclerView.ViewHolder{        Banner banner;        public HeadViewHolder(View itemView) {            super(itemView);            banner= (Banner) itemView.findViewById(R.id.banner);        }    }    class HeadTwoViewHolder extends RecyclerView.ViewHolder{        TextView textView;        public HeadTwoViewHolder(View itemView) {            super(itemView);            textView= (TextView) itemView.findViewById(R.id.textview);        }    }    class HeadThreeViewHolder extends RecyclerView.ViewHolder {        ImageView imageView;        public HeadThreeViewHolder(View itemView) {            super(itemView);            imageView = (ImageView) itemView.findViewById(R.id.image);        }    }    class FooterViewHolder extends RecyclerView.ViewHolder{        TextView textView;        public FooterViewHolder(View itemView) {            super(itemView);            textView= (TextView) itemView.findViewById(R.id.foot_textview);        }    }    class MyViewHolder extends RecyclerView.ViewHolder{        TextView textView;        public MyViewHolder(View itemView) {            super(itemView);            textView= (TextView) itemView.findViewById(R.id.item_tv);        }    }}

恩,这个就是首页的东西了,下面的话就是Activity跟fragment不清不楚的关系了。

package com.wsp.thinkpad.recyclerviewdemo;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;public class MainActivity extends AppCompatActivity {    LinearLayout oneLl,twoLl,threeLl,fourLl;    TextView oneTv,twoTv,threeTv,fourTv;    ImageView oneIv,twoIv,threeIv,fourIv;    FragmentSwitchTool fragmentSwitchTool;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        getSupportActionBar().hide();        setContentView(R.layout.activity_main);        initView();        initFragment();    }    private void initFragment() {        fragmentSwitchTool =new FragmentSwitchTool(getFragmentManager(),R.id.framelayout);        fragmentSwitchTool.setClickableViews(oneLl,twoLl,threeLl,fourLl);        fragmentSwitchTool.addSelectedViews(new View[]{oneTv,oneIv})                            .addSelectedViews(new View[]{twoTv,twoIv})                            .addSelectedViews(new View[]{threeTv,threeIv})                            .addSelectedViews(new View[]{fourTv,fourIv});        fragmentSwitchTool.setFragments(OneFragment.class,TwoFragment.class,ThreeFragment.class,FourFragment.class);        fragmentSwitchTool.changeTag(oneLl);    }    private void initView() {        oneLl= (LinearLayout) findViewById(R.id.one_ll);        twoLl= (LinearLayout) findViewById(R.id.two_ll);        threeLl= (LinearLayout) findViewById(R.id.three_ll);        fourLl= (LinearLayout) findViewById(R.id.four_ll);        oneIv= (ImageView) findViewById(R.id.one_iv);        twoIv= (ImageView) findViewById(R.id.two_iv);        threeIv= (ImageView) findViewById(R.id.three_iv);        fourIv= (ImageView) findViewById(R.id.four_iv);        oneTv= (TextView) findViewById(R.id.one_tv);        twoTv= (TextView) findViewById(R.id.two_tv);        threeTv= (TextView) findViewById(R.id.three_tv);        fourTv= (TextView) findViewById(R.id.four_tv);    }}

这个没啥好说的,都看得懂的,这里FragmentSwitchTool类是我偷的,下面附上我偷各种东西的链接

这里是我github上面的源码,求stars

biu–>参考此神的头部添加
biu–>用的这位大神的banner

0 0
原创粉丝点击