• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 组件RecyclerView的应用(一),组件recyclerview

组件RecyclerView的应用(一),组件recyclerview

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了view组件,自定义view组件,应用程序缺少组件,com 应用程序和组件,技嘉应用中心组件等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

组件RecyclerView的应用(一),组件recyclerview


首先我们知道RecyclerView组件是ListView的升级版,今天先介绍基础的RecyclerView的基本布局RecyclerView.Adapter和LayoutManager

第一:

LayoutManager

我们知道ListView只能在垂直方向上滚动,Android API没有提供ListView在水平方向上面滚动的支持。或许有多种方式实现水平滑动,ListView并不是设计来做这件事情的。但是RecyclerView相较于ListView,在滚动上面的功能扩展了许多。它可以支持多种类型列表的展示要求,主要如下:

LinearLayoutManager ,可以支持水平和竖直方向上滚动的列表。

StaggeredGridLayoutManager ,可以支持交叉网格风格的列表,类似于瀑布流或者Pinterest。

GridLayoutManager ,支持网格展示,可以水平或者竖直滚动,如展示图片的画廊。

因此RecyclerView相对于ListView来说自定义性扩展了很多

第二:

RecyclerView.Adapter和ListView的BaseAdapter不同之处在于:BaseAdapter都是在getView一个方法中实现的,包括View的实例化以及组件的绑定。在RecyclerView.Adapter中,则提供了RecyclerView.ViewHolder机制,这个类必须我们自己定义,主要是用来保存视图的类,主要在onCreateViewHolder中实现View的保存

public static class ViewHolder extends RecyclerView.ViewHolder
{
public TextView itemText;
public ViewHolder(View itemView) {
super(itemView);
itemText = (TextView)findViewById(R.id.item_text);
}
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = layoutInflater.inflate(R.layout.item_recyclerview,parent,false);
return new ViewHolder(view);
}
另外还需要实现getCount()方法,也就是返回item的数量,另外 onBindViewHolder()方法实现对应的组件和数据绑定
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
((ViewHolder)holder).itemText.setText(titleList.get(position));
}

以下为我写的基本实现RecyclerView功能的一段小代码
/**
适配器类
**/

public class RecyclerAdapter extends RecyclerView.Adapter {
    private List<String> titleList;
    private LayoutInflater layoutInflater;
    public RecyclerAdapter(Context context)
    {
        this.titleList = new ArrayList<>();
        for(int i=0;i<30;i++)
        {
            titleList.add("item"+i);
        }
        layoutInflater = LayoutInflater.from(context);
    }
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = layoutInflater.inflate(R.layout.item_recyclerview,parent,false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        ((ViewHolder)holder).itemText.setText(titleList.get(position));
    }

    @Override
    public int getItemCount() {
        return titleList.size();
    }
    public static class ViewHolder extends RecyclerView.ViewHolder
    {
        //public TextView itemText;
        public ViewHolder(View itemView) {
            super(itemView);
        }
    }
}

/**

主界面代码  

**/

        mRecyclerView = (RecyclerView)pageList.get(SPORT).findViewById(R.id.recyclerview);
        mRecyclerView.setHasFixedSize(true);
        mLinearLayoutManager = new LinearLayoutManager(this);
        mLinearLayoutManager.setOrientation(OrientationHelper.VERTICAL);
        RecyclerAdapter mRecyclerAdapter = new RecyclerAdapter(this);
        mRecyclerView.setLayoutManager(mLinearLayoutManager);
        mRecyclerView.setAdapter(mRecyclerAdapter);

  注:pageList.get(SPORT)为自己定义的一个实例化view,读者可以根据自己需要定制不同的xml文件并将其实例化为view

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 组件RecyclerView的应用(一),组件recyclerview
  • 自定义加载loading view动画组件的使用。,loadingview

相关文章

  • 2017-05-26ViewPager与PagerAdapter,viewpager
  • 2017-05-26FlatBuffers初探,flatbuffers
  • 2017-05-26解决 Could not find com.android.tools.build:gradle 问题,couldnotfindntldr
  • 2017-05-26Android网络编程(二)HttpClient与HttpURLConnection
  • 2017-05-26For each循环中使用remove方法。,eachremove
  • 2017-05-26Android4.4访问外部存储,android4.4访问存储
  • 2017-05-26Unity编译时找不到AndroidSDK的问题 | Unable to list target platforms(转载),unityengine.ui找不到
  • 2017-05-26arcgis andriod 加载影像,arcgisandriod
  • 2017-05-26解决Android Graphical Layout 界面效果不显示,androidgraphical
  • 2017-05-26Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define ...,dalvikdex

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android安全专项-AndBug动态调试工具环境搭建
    • 安卓GreenDao框架一些进阶用法整理,安卓greendao
    • Android Log,androidlog
    • 解决 在Android开发上使用KSOAP2上传大图片到服务器经常报错的问题,
    • msm8909+android5.1.1编译前配置及增加新项目和产品所需分支
    • Android SDK镜像更新网速慢的解决问题,androidsdk
    • Tips:datapump异常中断后的处理
    • 在Android应用程序使用YouTube API来嵌入视频,
    • Android 数据库SQLite 写入SD卡,androidsqlite
    • Android之HTTP网络通信--GET传递,android--get

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有