All Projects → thepacific → Adapter

thepacific / Adapter

A quick adapter library for RecyclerView, GridView, ListView, ViewPager, Spinner

Programming Languages

kotlin
9241 projects

Projects that are alternatives of or similar to Adapter

Overscroll Decor
Android: iOS-like over-scrolling effect applicable over almost all scrollable Android views.
Stars: ✭ 2,671 (+610.37%)
Mutual labels:  recyclerview, viewpager, listview, gridview
Superadapter
[Deprecated]. 🚀 Adapter(BaseAdapter, RecyclerView.Adapter) wrapper for Android. 一个Adapter同时适用RecyclerView、ListView、GridView等。
Stars: ✭ 638 (+69.68%)
Mutual labels:  adapter, recyclerview, listview, gridview
adapster
Android library designed to enrich and make your RecyclerView adapters more SOLID
Stars: ✭ 17 (-95.48%)
Mutual labels:  adapter, listview, recyclerview
Kotlin Adapter
🔥 RecyclerView,AbsListView适配器, 支持多种视图样式, 支持吸顶、侧滑删除、拖拽效果
Stars: ✭ 132 (-64.89%)
Mutual labels:  adapter, recyclerview, listview
Imageviewer
🔮图片浏览器,支持图片手势缩放、拖拽等操作,`自定义View`的模式显示,自定义图片加载方式,更加灵活,易于扩展,同时也适用于RecyclerView、ListView的横向和纵向列表模式,最低支持版本为Android 3.0及以上...
Stars: ✭ 363 (-3.46%)
Mutual labels:  recyclerview, listview, gridview
Placeholderview
This library provides advance views for lists and stacks. Some of the views are build on top of RecyclerView and others are written in their own. Annotations are compiled by annotation processor to generate bind classes. DOCS -->
Stars: ✭ 2,104 (+459.57%)
Mutual labels:  recyclerview, listview, gridview
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 (+678.72%)
Mutual labels:  adapter, recyclerview, gridview
android-page
android 分页列表数据加载引擎,主要封装了android分页列表数据加载的各个组件,如果你有一个需要分页加载的List列表,都可以使用此框架实现。
Stars: ✭ 15 (-96.01%)
Mutual labels:  listview, recyclerview, gridview
GenericAdapter
⛳️ Easy to use android databinding ready recyclerview adapter
Stars: ✭ 26 (-93.09%)
Mutual labels:  adapter, listview, recyclerview
Commonadapter
一个适用于ListView/GridView/RecyclerView的Adapter库,简化大量重复代码,支持多种布局,可自定义图片加载的实现。
Stars: ✭ 219 (-41.76%)
Mutual labels:  adapter, recyclerview, listview
Countdowntask
⌛️A countdown library for Android.
Stars: ✭ 64 (-82.98%)
Mutual labels:  recyclerview, listview, gridview
recycler-adapter
RecyclerView-driven declarative UIs
Stars: ✭ 124 (-67.02%)
Mutual labels:  adapter, listview, recyclerview
Google Books Android Viewer
Android library to bridge between RecyclerView and sources like web page or database. Includes demonstrator (Google Books viewer)
Stars: ✭ 37 (-90.16%)
Mutual labels:  adapter, recyclerview, listview
Easyadapter
Android 轻量级适配器,简化使用,适应所有的AbsListView、RecyclerView。支持HeaderView与FooterView~
Stars: ✭ 160 (-57.45%)
Mutual labels:  adapter, recyclerview, listview
GenericRecyclerAdapter
Easiest way to use RecyclerView. Reduce boilerplate code! You don't need to write adapters for listing pages anymore!
Stars: ✭ 53 (-85.9%)
Mutual labels:  adapter, listview, recyclerview
Boardview
A draggable boardview for java android (Kanban style)
Stars: ✭ 309 (-17.82%)
Mutual labels:  adapter, recyclerview, listview
recyclerview-list-drag-and-drop
No description or website provided.
Stars: ✭ 50 (-86.7%)
Mutual labels:  listview, recyclerview
GhostAdapter
No description or website provided.
Stars: ✭ 15 (-96.01%)
Mutual labels:  adapter, recyclerview
react-recycled-scrolling
Simulate normal scrolling by using only fixed number of DOM elements for large lists of items with React Hooks
Stars: ✭ 26 (-93.09%)
Mutual labels:  listview, recyclerview
react-native-nlist
原生Listview Native lListView react-native encapsulation Memory recovery reusing High performance
Stars: ✭ 60 (-84.04%)
Mutual labels:  listview, recyclerview

Adapter

A quick adapter library for RecyclerView, GridView, ListView, ViewPager, Spinner. It abstracts the boilerplate of item view types, item layouts, viewholders, span sizes , and more, in order to simplify building complex screens with multiple view types.

If you are using version 2.x please check here

DownloadAndroid Arsenal

Features

  • Support ViewBinding、DataBinding、DefaultBinding.
  • Multiple view types without any ViewHolder
  • Simple, flexible

Setup

implementation 'com.github.thepacific:adapter:{lastVersion}'

Usage

class MyType1(val data: Any) : SimpleRecyclerItem()

class MyType2(val data: Any) : SimpleRecyclerItem()

class MyType3(val data: Any) : SimpleRecyclerItem()

val adapter = RecyclerAdapter()

adapter.onClickListener = View.OnClickListener { }
adapter.imageLoader = adapter.imageLoader = object : AdapterImageLoader {}

val item1 = MyType1(Any())
val list2 = mutableListOf<MyType2>()
val list3 = mutableListOf<MyType3>()

adapter.add(item1)
adapter.addAll(list2.toList())
adapter.addAll(list3.toList())

Item

Extend SimpleRecylcerItem. Optionally, you may implement RecyclerItem

class MovieItem(val data: Movie) : SimpleRecyclerItem() {

    override fun getLayout(): Int {
        return R.layout.item_movie
    }

    override fun bind(holder: AdapterViewHolder) {
        val binding = holder.binding(ItemMovieBinding::bind)
        binding.itemPosterTitle.text = data.name
        binding.itemPosterRunningTime.text = data.showTime

        // attach UI listeners
        holder.attachOnClickListener(R.id.item_poster_post)
        holder.attachOnLongClickListener(R.id.item_poster_post)
        holder.attachOnCheckedChangeListener(R.id.item_poster_post)
        holder.attachOnTouchListener(R.id.item_poster_post)
        holder.attachImageLoader(R.id.item_poster_post)
        holder.attachTextChangedListener(R.id.item_poster_post)
        holder.detachTextChangedListener(R.id.item_poster_post)
    }

    override fun bindPayloads(holder: AdapterViewHolder, payloads: List<Any>?) {
    }

    override fun unbind(holder: AdapterViewHolder) {
    }

    // You may override other methods
}

Listeners

Set OnClickListener、OnLongClickListener、OnTouchListener、OnCheckedChangeListener、ImageLoader and TextWatcher

class HomeFragment : Fragment() {

    private val adapter = RecyclerAdapter()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // adapter.setOnTouchListener(OnTouchListener listener);
        // adapter.setOnLongClickListener(OnLongClickListener listener);
        // adapter.setOnCheckedChangeListener(OnCheckedChangeListener listener);
        adapter.onClickListener = View.OnClickListener { v ->

            // AdapterUtils
            val holder: AdapterViewHolder = AdapterUtils.getHolder(v)// get ViewHolder
            val textView = holder.itemView.findViewById<TextView>(R.id.item_poster_title)// find view
            val item: MovieItem = holder.item()// get Item
            val itemCount: Int = holder.itemCount// get adapter data size
            val position = holder.bindingAdapterPosition // get item position
        }

        // load image
        adapter.imageLoader = object : AdapterImageLoader {

            override fun onImageLoad(imageView: ImageView, holder: AdapterViewHolder) {

                GlideApp.with(this@HomeFragment)
                    .load(holder.item<MovieItem>().data.img)
                    .into(imageView)
            }
        }

        // TextWatcher
        adapter.textChangedListener = object : AdapterTextWatcher {

            override fun beforeTextChanged(
                v: TextView,
                s: CharSequence?,
                start: Int,
                count: Int,
                after: Int,
                holder: AdapterViewHolder
            ) {
                // AdapterUtils
            }

            override fun onTextChanged(
                v: TextView,
                s: CharSequence?,
                start: Int,
                before: Int,
                count: Int,
                holder: AdapterViewHolder
            ) {
                // AdapterUtils
            }

            override fun afterTextChanged(v: TextView, s: Editable, holder: AdapterViewHolder) {
                // AdapterUtils
            }
        }
    }
}

Others

data set changed callback , it's useful to show or hide empty view

adapter.setOnDataSetChanged(OnDataSetChanged onDataSetChanged);

License

The MIT License

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