All Projects → TJYOYO → Recyclerviewtest

TJYOYO / Recyclerviewtest

RecyclerView 实践学习的demo,其中有基本的列表,表格,瀑布流,进阶的,等等

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Recyclerviewtest

Multichoicerecyclerview
Multi choice selection applied on recycler view make life easier
Stars: ✭ 361 (+1469.57%)
Mutual labels:  recyclerview, recyclerview-adapter
Multiviewadapter
Easily create complex recyclerview adapters in android
Stars: ✭ 801 (+3382.61%)
Mutual labels:  recyclerview, recyclerview-adapter
Klaster
Declare RecyclerView adapters in a functional way, without boilerplate and subclassing. No compromises on flexibility. If it's possible to do something by subclassing, it's possible to do it with this library.
Stars: ✭ 373 (+1521.74%)
Mutual labels:  recyclerview, recyclerview-adapter
Kiel
Kotlin way of building RecyclerView Adapter 🧩. You do not have to write RecyclerView Adapters again and again and suffer from handling of different view types. Kiel will help you.
Stars: ✭ 297 (+1191.3%)
Mutual labels:  recyclerview, recyclerview-adapter
Easyxrecyclerview
主要提供了简单易用强大的RecyclerView库,包括自定义刷新加载效果、极简通用的万能适配器Adapter、万能分割线、多种分组效果、常见状态页面、item动画效果、添加多个header和footer、侧滑、拖拽、Sticky(黏性)效果、多item布局等,各模块之间灵活、解耦、通用、又能相互组合使用。
Stars: ✭ 607 (+2539.13%)
Mutual labels:  recyclerview, recyclerview-adapter
Fastadapter
The bullet proof, fast and easy to use adapter library, which minimizes developing time to a fraction...
Stars: ✭ 3,512 (+15169.57%)
Mutual labels:  recyclerview, recyclerview-adapter
Recyclerviewtemplate
One Template which solves all frequently used RecyclerViews Code Snippets
Stars: ✭ 404 (+1656.52%)
Mutual labels:  recyclerview, recyclerview-adapter
SimplifiedRecyclerview
An android library to help you get rid of boiler plate code when setting up Recyclerview
Stars: ✭ 19 (-17.39%)
Mutual labels:  recyclerview, recyclerview-adapter
Codeview Android
Display code with syntax highlighting ✨ in native way.
Stars: ✭ 748 (+3152.17%)
Mutual labels:  recyclerview, recyclerview-adapter
Baserecyclerviewadapterhelper
BRVAH:Powerful and flexible RecyclerAdapter
Stars: ✭ 22,524 (+97830.43%)
Mutual labels:  recyclerview, recyclerview-adapter
Chipslayoutmanager
ANDROID. ChipsLayoutManager (SpanLayoutManager, FlowLayoutManager). A custom layout manager for RecyclerView which mimicric TextView span behaviour, flow layouts behaviour with support of amazing recyclerView features
Stars: ✭ 3,138 (+13543.48%)
Mutual labels:  recyclerview, recyclerview-adapter
Expandablerecyclerview
A very simple example of how the expandable RecyclerView can be implemented
Stars: ✭ 16 (-30.43%)
Mutual labels:  recyclerview, recyclerview-adapter
Recyclerviewevent
RecyclerView onItemClick、onItemLongClick、drag、swipe、divider、reuse disorder RecyclerView 梳理:点击&长按事件、分割线、拖曳排序、滑动删除、优雅解决 EditText 和 CheckBox 复用错乱问题
Stars: ✭ 265 (+1052.17%)
Mutual labels:  recyclerview, recyclerview-adapter
Brv
Android上最强大的RecyclerView库
Stars: ✭ 345 (+1400%)
Mutual labels:  recyclerview, recyclerview-adapter
Tableview
TableView is a powerful Android library for displaying complex data structures and rendering tabular data composed of rows, columns and cells.
Stars: ✭ 2,928 (+12630.43%)
Mutual labels:  recyclerview, recyclerview-adapter
Brvah kotlin
This is kotlin BRVAH Demo
Stars: ✭ 402 (+1647.83%)
Mutual labels:  recyclerview, recyclerview-adapter
AccordionRecycler
Android RecyclerView Adapter with nested items & expand/contract functionality
Stars: ✭ 17 (-26.09%)
Mutual labels:  recyclerview, recyclerview-adapter
RecyclerELE
Android Library for easy addition of Empty, Loading and Error views in a RecyclerView
Stars: ✭ 27 (+17.39%)
Mutual labels:  recyclerview, recyclerview-adapter
Recycler Fast Scroll
Provides fast scroll and section idexer for recycler view
Stars: ✭ 445 (+1834.78%)
Mutual labels:  recyclerview, recyclerview-adapter
Zoomrecylerlayout
🎢 Zoom Recycler Layout Manager For Android Kotlin
Stars: ✭ 618 (+2586.96%)
Mutual labels:  recyclerview, recyclerview-adapter

RecyclerViewTest

RecyclerView 实践学习的demo,其中有基本的,瀑布流,进阶的,等等

##一:表格的实现

最终效果:

device-2017-03-13-135723.png

代码分析, 其中遇到的问题和坑:

####1: 外围的黑色边框,shape完成 ( bg.xml )

<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- 填充-->
    <solid android:color="#ffffff"></solid>
    <!-- 边框 -->
    <stroke android:color="#000000" android:width="2dp"></stroke>
</shape>

上面是4面的边框,如果想实现一个3面的边框呢? 可以使用layer-list的图片叠加功能实现,(bg_header.xml)

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <!-- 实现了只有left,top,right的3面边框, 底部不需要 -->

    <item>
        <shape android:shape="rectangle" >
            <stroke
                android:width="1dp"
                android:color="@color/black" />
        </shape>
    </item>

    <item
        android:left="2dp"
        android:right="2dp"
        android:top="2dp">
        <!-- 可以完全理解为top就是paddingTop,bottom就是paddingBottom。就是内边距。
        这边的3面有内边距,-->

        <!-- 在实际使用中我发现1dp达不到显示效果,而2dp正好可以显示边框 -->

        <shape android:shape="rectangle" >
            <solid android:color="@color/mainColor" />
        </shape>
    </item>
</layer-list>

####2: 列表中的下划线实现

a: 实现类DividerItemDecoration.class, 见项目代码

RecyclerView.ItemDecoration,该类为抽象类,官方目前并没有提供默认的实现类。而DividerItemDecoration.class该类很好的实现了RecyclerView添加分割线。

b: recyclerview 添加item的下划线,和方向

mRecyclerView.addItemDecoration(new DividerItemDecoration( getActivity(), DividerItemDecoration.VERTICAL_LIST));

在该demo的表格中下划线的方向是垂直方向,不要弄错,已经犯过了!

c: AppTheme中进行下划线的颜色修改

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        //下划线的颜色修改
        <item name="android:listDivider">@drawable/item_bottom_line</item>
    </style>

####3: 添加header

思路:adapter提供的getItemViewType()方法,来区分不同的view,加载不同的布局实现。

a: getItemViewType()中根据位置position==0来判断是header布局

@Override
    public int getItemViewType(int position) {
        if(position == 0){
            return TYPE_HEADER;
        }

        if (position == getItemCount()-1){
            //最后一个,应该加载Footer
            return TYPE_FOOTER;
        }

        return TYPE_NORMAL;
    }

b: 通过判断headerView和类型是不是正确,布局header到recyclerView中

@Override
    public NormalViewholder onCreateViewHolder(ViewGroup parent, int viewType) {

        if(mHeaderView != null && viewType == TYPE_HEADER){
            //需要传入parent,不然item不能居中
//            return new NormalViewholder(mHeaderView);
            return new NormalViewholder(LayoutInflater.from(mContext).inflate(R.layout.item_first_header, parent, false));
        }

        //需要传入parent,不然item不能居中
        View viewNormal = LayoutInflater.from(mContext).inflate(R.layout.item_recycler_grid, parent, false);
        return new NormalViewholder(viewNormal);
    }

c: 设置header

private void setAdaperHeader(){
        View view = LayoutInflater.from(mActivity).inflate(R.layout.item_first_header,null);
        mAdapter.setHeader(view);
    }

####坑1:布局中的文字不能居中

解决方法:布局文件,需要进过layoutinflater加入到parent才行!!!!!

if(mHeaderView != null && viewType == TYPE_HEADER){
            //需要传入parent,不然item不能居中
//            return new NormalViewholder(mHeaderView);
            return new NormalViewholder(LayoutInflater.from(mContext).inflate(R.layout.item_first_header, parent, false));
        }

####坑2:给header设置毕竟颜色时,黑色的边框给覆盖了

device-2017-03-13-135550.png

解决方法:使用layer-list实现一个背景,这个背景是将left,top,right3面的内边距减掉2dp的,这样和原来的布局重叠一下,黑色的边框就出来了!

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:left="2dp"
        android:right="2dp"
        android:top="2dp">
        <shape>
            <solid android:color="@color/colorAccent"></solid>
        </shape>
    </item>

</layer-list>

好了,到这里基本弄完了,有问题的欢迎留言,谢谢! github地址:https://github.com/George-Soros/RecyclerViewTest

##2:瀑布流的截图, 其中图片的数据,来自抓包网易客户端美女图片的接口获取到的

image

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].