recycleView简单用法
效果:
MDRvActivity:
public class MDRvActivity extends AppCompatActivity { String imgur2="http://images.rednet.cn/ArticleImage/2017/04/25/201716483007449.jpg"; String imgurl3="http://images.rednet.cn/ArticleImage/2017/04/25/2017167258494983.jpg"; String geyan="学历代表过去,能力代表现在,学习力代表将来";private RecyclerView mRecyclerView;private RecyclerView.Adapter mAdapter;private RecyclerView.LayoutManager mLayoutManager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.recycle_mdrv);initData();initView();}private void initData() {mLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);mAdapter = new MyAdapter(getData());}private void initView() {//RecyclerView的控件id,获取RecyclerView的控件mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);// 设置布局管理器 mRecyclerView.setLayoutManager(mLayoutManager);// 设置adapter mRecyclerView.setAdapter(mAdapter);mRecyclerView.addItemDecoration(new MyDividerItemDecoration(this, LinearLayoutManager.VERTICAL));}/* private ArrayList<NewsListData> getData() {ArrayList<NewsListData> data = new ArrayList<NewsListData>();for(int i = 0; i < 10; i++) {NewsListData newsListData=new NewsListData(imgur2,geyan+i,"10-11推荐");data.add(newsListData);}return data;}*/protected List getData(){List mDatas = new ArrayList<String>();for (int i = 'A'; i < 'z'; i++){mDatas.add("" + (char) i);}return mDatas;}}
MyAdapter:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{private List<String> mData;public MyAdapter(List data) {this.mData = data;}public void updateData(List data) {this.mData = data;notifyDataSetChanged();}@Overridepublic ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {// 实例化展示的viewView v = LayoutInflater.from(parent.getContext()).inflate(R.layout.my, parent, false);// 实例化viewholderViewHolder viewHolder = new ViewHolder(v);return viewHolder;}@Overridepublic void onBindViewHolder(ViewHolder holder, int position) {// 绑定数据 holder.mTv.setText((CharSequence) mData.get(position));}@Overridepublic int getItemCount() {return mData == null ? 0 : mData.size();}public static class ViewHolder extends RecyclerView.ViewHolder {TextView mTv;public ViewHolder(View itemView) {super(itemView);mTv = (TextView) itemView.findViewById(R.id.item_tv);}} }
MyDividerItemDecoration添加分割线:
public class MyDividerItemDecoration extends RecyclerView.ItemDecoration {private static final int[] ATTRS = new int[]{android.R.attr.listDivider};public static final int HORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL;public static final int VERTICAL_LIST = LinearLayoutManager.VERTICAL;/*** 用于绘制间隔样式*/private Drawable mDivider;/*** 列表的方向,水平/竖直*/private int mOrientation;public MyDividerItemDecoration(Context context, int orientation) {// 获取默认主题的属性final TypedArray a = context.obtainStyledAttributes(ATTRS);mDivider = a.getDrawable(0);a.recycle();setOrientation(orientation);}@Overridepublic void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {// 绘制间隔if (mOrientation == VERTICAL_LIST) {drawVertical(c, parent);} else {drawHorizontal(c, parent);}}@Overridepublic void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {if (mOrientation == VERTICAL_LIST) {outRect.set(0, 0, 0, mDivider.getIntrinsicHeight());} else {outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0);}}private void setOrientation(int orientation) {if (orientation != HORIZONTAL_LIST && orientation != VERTICAL_LIST) {throw new IllegalArgumentException("invalid orientation");}mOrientation = orientation;}/*** 绘制间隔*/private void drawVertical(Canvas c, RecyclerView parent) {final int left = parent.getPaddingLeft();final int right = parent.getWidth() - parent.getPaddingRight();final int childCount = parent.getChildCount();for (int i = 0; i < childCount; i++) {final View child = parent.getChildAt(i);final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();final int top = child.getBottom() + params.bottomMargin +Math.round(ViewCompat.getTranslationY(child));final int bottom = top + mDivider.getIntrinsicHeight();mDivider.setBounds(left, top, right, bottom);mDivider.draw(c);}}/*** 绘制间隔*/private void drawHorizontal(Canvas c, RecyclerView parent) {final int top = parent.getPaddingTop();final int bottom = parent.getHeight() - parent.getPaddingBottom();final int childCount = parent.getChildCount();for (int i = 0; i < childCount; i++) {final View child = parent.getChildAt(i);final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();final int left = child.getRight() + params.rightMargin +Math.round(ViewCompat.getTranslationX(child));final int right = left + mDivider.getIntrinsicHeight();mDivider.setBounds(left, top, right, bottom);mDivider.draw(c);}} }
recycle_main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="500px"android:layout_marginTop="100px"tools:ignore="MissingDefaultResource"><android.support.v7.widget.RecyclerViewandroid:id="@+id/my_recycler_view"android:scrollbars="vertical"android:layout_width="match_parent"android:layout_height="match_parent"/> </LinearLayout>
item.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:orientation="vertical" android:layout_width="match_parent" android:layout_height="50dp"tools:ignore="MissingDefaultResource"> <TextViewandroid:id="@+id/item_tv"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"/> </LinearLayout>
转载于:https://www.cnblogs.com/goodshred/p/9777398.html
recycleView简单用法相关推荐
- 反编译工具jad简单用法
反编译工具jad简单用法 下载地址: [url]http://58.251.57.206/down1?cid=B99584EFA6154A13E5C0B273C3876BD4CC8CE672& ...
- QCustomPlot的简单用法总结
QCustomPlot的简单用法总结 第一部分:QCustomPlot的下载与安装 第二部分:QCustomPlot在VS2013+QT下的使用 QCustomPlot的简单用法总结 写在前面, ...
- python matplotlib 简单用法
python matplotlib 简单用法 具体内容请参考官网 代码 import matplotlib.pyplot as plt import numpy as np # 支持中文 plt.rc ...
- Windump网络命令的简单用法
Windump网络命令的简单用法 大家都知道,unix系统下有个tcpdump的抓包工具,非常好用,是做troubleshooting的好帮手.其实在windows下也有一个类似的工作,叫windum ...
- Android TabLayout(选项卡布局)简单用法实例分析
本文实例讲述了Android TabLayout(选项卡布局)简单用法.分享给大家供大家参考,具体如下: 我们在应用viewpager的时候,经常会使用TabPageIndicator来与其配合.达到 ...
- shell expect的简单用法
为什么需要expect? 我们通过Shell可以实现简单的控制流功能,如:循环.判断等.但是对于需要交互的场合则必须通过人工来干预,有时候我们可能会需要实现和交互程序如 telnet服务器等进 ...
- Shellz中awk的简单用法
其实shell脚本的功能常常被低估.在实际应用中awk sed 等用法可以为shell提供更为强大的功能.下面我们将一下awk调用的简单方法进行了总结.方便同学们学习: awk的简单用法: 第一种调用 ...
- python装饰器实例-Python装饰器原理与简单用法实例分析
本文实例讲述了Python装饰器原理与简单用法.分享给大家供大家参考,具体如下: 今天整理装饰器,内嵌的装饰器.让装饰器带参数等多种形式,非常复杂,让人头疼不已.但是突然间发现了装饰器的奥秘,原来如此 ...
- python装饰器实例-Python装饰器简单用法实例小结
本文总结分析了Python装饰器简单用法.分享给大家供大家参考,具体如下: 装饰器在python中扮演着很重要的作用,例如插入日志等,装饰器可以为添加额外的功能同时又不影响业务函数的功能. 比如,运行 ...
最新文章
- 华硕服务器第三届“IT硬件平台搭建大赛”获奖方案
- flink 三种时间机制_360深度实践:Flink 与 Storm 协议级对比
- 2、Java Swing JFrame和JPanel:窗口容器和面板容器
- 信号与系统matlab课设报告,MATLAB信号与系统实验报告
- post多个参数_关于HTTP GET和POST的区别
- 智能机器人及其应用ppt课件_一文了解!伺服系统机理及其在工业机器人等领域的应用...
- windows 禁用ipv6服务_Win10如何关闭IPV6?Win10禁用IPv6的方法
- Linux 目录配置标准:FHS
- node php go python_PHP 可能在未来十年内消失?
- hbase动态更改行键设计_谈笑间学会Hbase Rowkey设计
- log4net配置说明及使用方法
- 进程和线程不属于标准c语言,经典C语言面试题6:进程与线程的关系和区别
- PCTFREEITLCONSISTANT READ
- 计蒜客-最大子阵列 / NYOJ题目44-子串和
- python贪吃蛇手机版代码_Python贪吃蛇简单的代码
- 彻底搞懂瓦片地图拼接原理并附具体实现
- 蓝桥秘密冲刺计划(9.17)年号字串
- 蓝桥杯 算法训练 调和数列问题
- php 硬盘序号_怎么查看电脑硬盘序列号
- 计算机 上的图片怎样加密码,高手加密法之利用图片给电脑加密新招