RecyclerViewDemo

**额,刚刚进了家外包公司,里面全部做商城类的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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值