All Projects → zhazhaxin → RecyclerView

zhazhaxin / RecyclerView

Licence: other
支持下拉刷新,上拉加载,Header,Footer,复杂多种数据结构类型

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to RecyclerView

kandy
Sweet Android libraries written in Kotlin
Stars: ✭ 19 (-94.03%)
Mutual labels:  recyclerview-adapter, recyclerview-multi-type
Statik
A simple static list information backed by RecyclerView for Android in Kotlin
Stars: ✭ 22 (-93.08%)
Mutual labels:  recyclerview-adapter, recyclerview-multi-type
AccordionRecycler
Android RecyclerView Adapter with nested items & expand/contract functionality
Stars: ✭ 17 (-94.65%)
Mutual labels:  recyclerview-adapter, recyclerview-multi-type
LxAdapter
RecyclerView Adapter Library
Stars: ✭ 50 (-84.28%)
Mutual labels:  recyclerview-adapter, recyclerview-multi-type
RecyclerELE
Android Library for easy addition of Empty, Loading and Error views in a RecyclerView
Stars: ✭ 27 (-91.51%)
Mutual labels:  recyclerview-adapter, recyclerview-multi-type
recyclerview-adapters
Multiple item adapters for RecyclerView (inspired by Merge Adapter)
Stars: ✭ 24 (-92.45%)
Mutual labels:  recyclerview-adapter
AdapterCommands
Drop in solution to animate RecyclerView's dataset changes by using command pattern
Stars: ✭ 74 (-76.73%)
Mutual labels:  recyclerview-adapter
Adapterdelegates
"Favor composition over inheritance" for RecyclerView Adapters
Stars: ✭ 2,735 (+760.06%)
Mutual labels:  recyclerview-adapter
Async Expandable List
Stars: ✭ 221 (-30.5%)
Mutual labels:  recyclerview-adapter
Konveyor
No description or website provided.
Stars: ✭ 46 (-85.53%)
Mutual labels:  recyclerview-adapter
Recycling
A Library for make an easy and faster RecyclerView without adapter
Stars: ✭ 57 (-82.08%)
Mutual labels:  recyclerview-adapter
E-commerceRetailerFYP
Android E-commerce Platform. Allow retailer to post product, manage order, chat and view report
Stars: ✭ 31 (-90.25%)
Mutual labels:  recyclerview-adapter
uMe
Online Chatting Application (Android) || Messaging App || Firebase
Stars: ✭ 138 (-56.6%)
Mutual labels:  recyclerview-adapter
LiveAdapter
Auto updating RecyclerView Adapter for LiveData
Stars: ✭ 50 (-84.28%)
Mutual labels:  recyclerview-adapter
BaseToolsLibrary
Android通用适配器和常用的工具类
Stars: ✭ 24 (-92.45%)
Mutual labels:  recyclerview-adapter
PrimeAdapter
PrimeAdapter makes working with RecyclerView easier.
Stars: ✭ 54 (-83.02%)
Mutual labels:  recyclerview-adapter
Admobadapter
It wraps your Adapter to display Admob native ads and banners in a ListView/RecyclerView data set. It based on the Yahoo fetchr project https://github.com/yahoo/fetchr
Stars: ✭ 224 (-29.56%)
Mutual labels:  recyclerview-adapter
Modular2Recycler
Modular²Recycler is a RecyclerView.Adapter that is modular squared.
Stars: ✭ 72 (-77.36%)
Mutual labels:  recyclerview-adapter
EQList
EQList(E-QuickList)是一款Kotlin实现的功能强大的RecyclerView渲染框架,使用DSL方式快速构建RecyclerView,无需实现Adapter和ViewHolder。
Stars: ✭ 17 (-94.65%)
Mutual labels:  recyclerview-adapter
MultiTypeAdapter
RecyclerView通用多类型适配器MultiTypeAdapter,以布局文件为单位更细粒度的条目复用。
Stars: ✭ 18 (-94.34%)
Mutual labels:  recyclerview-adapter

字节跳动 内推

抖音/番茄小说 Android/ios 急招,有其他岗位或者要求可以邮件私聊

欢迎发送简历到 [email protected]

RefreshRecyclerView

  • RecyclerAdapter : 支持下拉刷新,上拉加载,添加Header,Footer
  • MultiTypeAdapter/CustomMultiTypeAdapter : 针对 复杂数据类型列表 展示Adapter

注意 所有的 adapter 可以配合任意的 RecyclerView 或者 它的子类 使用,而不是仅仅局限于 RefreshRecyclerView 这个组件。

使用方法

  • gradle依赖
   compile 'cn.lemon:RefreshRecyclerView:2.0.0'
   compile 'com.android.support:recyclerview-v7:25.4.0'
  • xml布局文件
<cn.lemon.view.RefreshRecyclerView
    android:id="@+id/recycler_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:refresh_able="true"
    app:load_more_able="false"/>
  • java代码
mRecyclerView = (RefreshRecyclerView) findViewById(R.id.recycler_view);
mRecyclerView.setSwipeRefreshColors(0xFF437845,0xFFE44F98,0xFF2FAC21);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.addRefreshAction(new Action() {
    @Override
    public void onAction() {
        // TODO:刷新数据
    }
});

mRecyclerView.addLoadMoreAction(new Action() {
    @Override
    public void onAction() {
        // TODO:加载更多
    }
});
mRecyclerView.addLoadMoreErrorAction(new Action() {
   @Override
   public void onAction() {
       // TODO:加载更多错误,点击重新加载
   }
});
// Header 和 Footer 支持
mAdapter.setHeader(textView);
mAdapter.setFooter(footer);

RecyclerAdapter

针对相同数据类型列表,可添加 Header,Footer

自定义 Adapter 应该继承 RecyclerAdapter,如:

class CardRecordAdapter extends RecyclerAdapter<Consumption> {

    public CardRecordAdapter(Context context) {
        super(context);
    }

    @Override
    public BaseViewHolder<Consumption> onCreateBaseViewHolder(ViewGroup parent, int viewType) {
        return new CardRecordHolder(parent);
    }
}

MultiTypeAdapter

复杂数据类型列表的 Adapter,没有 Header,Footer 的概念,每个 Item 对应一个 ViewHolder 注意:通过反射实现,支持 ViewHolder 的带有一个参数(ViewGroup)和无参两种形式构造函数,性能方面微小的损耗。 构造函数为保证反射时能获取到,应该写成 public 静态内部类 或者 public 的单独类。

private MultiTypeAdapter mAdapter = new MultiTypeAdapter(this);
mAdapter.add(ImageViewHolder.class, getImageVirtualData());
mAdapter.addAll(TextViewHolder.class, getTextVirtualData());
mAdapter.addAll(TextImageViewHolder.class, getTextImageVirualData());
mAdapter.addAll(CardRecordHolder.class, getRecordVirtualData());

CustomMultiTypeAdapter (推荐使用)

功能和 MultiTypeAdapter 一样,但避免了反射带来的弊端,需要实现 IViewHolderFactory 接口类来管理viewtype 和 ViewHolder 的映射关系。

// 映射 viewtype 和 ViewHolder
@Override
public <V extends BaseViewHolder> V getViewHolder(ViewGroup parent, int viewType) {
    switch (viewType) {
        case VIEW_TYPE_TEXT:
            return (V) new TextViewHolder(parent);
        case VIEW_TYPE_IAMGE:
            return (V) new ImageViewHolder(parent);
        case VIEW_TYPE_TEXT_IMAGE:
            return (V) new TextImageViewHolder(parent);
        case VIEW_TYPE_CARD:
            return (V) new CardRecordHolder(parent);
        default:
            return (V) new TextViewHolder(parent);
    }
}

// 绑定数据
mAdapter.add(getImageVirtualData(), VIEW_TYPE_IAMGE);
mAdapter.addAll(getTextVirtualData(), VIEW_TYPE_TEXT);
mAdapter.addAll(getTextImageVirualData(), VIEW_TYPE_TEXT_IMAGE);
mAdapter.addAll(getRecordVirtualData(), VIEW_TYPE_CARD);

ViewHolder

自定义 ViewHolder 需继承 BaseViewHolder,如:

class CardRecordHolder extends BaseViewHolder<Consumption> {

//当使用MultiTypeAdapter时,务必加上此构造方法
public CardRecordHolder(ViewGroup parent) {
    super(parent, R.layout.holder_consume);
}

@Override
public void setData(Consumption object) {
    super.setData(object);
    name.setText("Demo");
    //UI绑定数据
}

@Override
public void onInitializeView() {
    super.onInitializeView();
    name = findViewById(R.id.name);
    //初始化View
}

@Override
public void onItemViewClick(Consumption object) {
    super.onItemViewClick(object);
    //点击事件
}
}

详细用法请看Demo

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].