RecyclerViewDemo
来源:互联网 发布:cf英雄级武器淘宝网 编辑:程序博客网 时间:2024/06/09 19:19
**额,刚刚进了家外包公司,里面全部做商城类的app。突然就觉得应该写点什么了,没错,今天就是要在这里放一个商城app经常用到的东西,各种fragment的hide和recyclerview的各种item。不吹逼了,上效果图。
**
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
- RecyclerViewDemo
- Recyclerviewdemo
- com.zry.recyclerviewdemo分割线
- Error:Execution failed for task ':RecyclerViewDemo:mergeDebugResources'.
- com.zry.recyclerviewdemo,GridView分割线
- XTU 1236 Fraction
- Anconda 中Spyder无法打开IPython控制台
- javaCV开发详解之3:收流器实现,录制流媒体服务器的rtsp/rtmp视频文件(基于javaCV-FFMPEG)
- Ubuntu16.04 下同时使用 Python2 和 Python3 及对应的 pip 的方法
- POJ3259_Wormholes_spfa
- RecyclerViewDemo
- javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)
- 安卓网络请求以及图片框架大集合
- CGridCtrl
- 擒贼先擒王-并查集
- lazarus安装组件后使用时出现 Cannot find xx used by
- javaCV开发详解之5:录制音频(录制麦克风)到本地文件/流媒体服务器(基于javax.sound、javaCV-FFMPEG)
- vue2自定义指令的作用
- 分布式消息队列RocketMQ--事务消息--解决分布式事务的最佳实践