All Projects → li-xiaojun → EasyAdapter

li-xiaojun / EasyAdapter

Licence: other
An simplify and practical version for hongyangAndroid [baseAdapter],重构了代码,并适配Kotlin。

Programming Languages

kotlin
9241 projects

Projects that are alternatives of or similar to EasyAdapter

ARVI
Android library designed to simplify the implementation of the video autoplay in the RecyclerView
Stars: ✭ 69 (+283.33%)
Mutual labels:  adapter
blackmagic-espidf
Blackmagic Wireless SWD Debug probe hosted on esp-idf SDK (for ESP8266) with UART on Telnet port and HTTP using xterm.js
Stars: ✭ 165 (+816.67%)
Mutual labels:  adapter
GenericAdapter
⛳️ Easy to use android databinding ready recyclerview adapter
Stars: ✭ 26 (+44.44%)
Mutual labels:  adapter
TheGreatAdapter
Multiple items adapter made too easy, including headers and footers.
Stars: ✭ 46 (+155.56%)
Mutual labels:  adapter
vscode-server-connector
📦 Connects Visual Studio Code to your server adapters and run, deploy apps !!
Stars: ✭ 41 (+127.78%)
Mutual labels:  adapter
RecyclerViewAdapter
A RecyclerView Adapter that support load more and add headerview
Stars: ✭ 145 (+705.56%)
Mutual labels:  adapter
ioBroker.epson stylus px830
Zustand Druckerpatronen im EPSON Stylus PX830 für ioBroker auslesen
Stars: ✭ 18 (+0%)
Mutual labels:  adapter
twitter-for-geoevent
ArcGIS GeoEvent Server sample Twitter connectors for sending and receiving tweets.
Stars: ✭ 21 (+16.67%)
Mutual labels:  adapter
sqlx-adapter
Asynchronous casbin adapter for mysql, postgres, sqlite based on sqlx-rs
Stars: ✭ 27 (+50%)
Mutual labels:  adapter
laravel-casbin
This repository has moved to https://github.com/php-casbin/laravel-authz
Stars: ✭ 42 (+133.33%)
Mutual labels:  adapter
casbin-pg-adapter
A go-pg adapter for casbin
Stars: ✭ 23 (+27.78%)
Mutual labels:  adapter
BlueRetro
Multiplayer Bluetooth controllers adapter for retro video game consoles
Stars: ✭ 520 (+2788.89%)
Mutual labels:  adapter
ioBroker.homepilot20
Rademacher Homepilot 2.0 (version >= 5.0.39)
Stars: ✭ 19 (+5.56%)
Mutual labels:  adapter
MixAdapter
Compose multiple Adapter for RecyclerView in Android
Stars: ✭ 19 (+5.56%)
Mutual labels:  adapter
Swiperoo
An extendable adapter which provides swipe-to-delete feature on your customized row item
Stars: ✭ 38 (+111.11%)
Mutual labels:  adapter
guzzle-psr18-adapter
A simple guzzle PSR-18 adapter
Stars: ✭ 13 (-27.78%)
Mutual labels:  adapter
ioBroker.vis-inventwo
Individualisierbare VIS Widgets für den ioBroker
Stars: ✭ 38 (+111.11%)
Mutual labels:  adapter
database
Advanced Database Access Service for Moleculer microservices framework
Stars: ✭ 22 (+22.22%)
Mutual labels:  adapter
hubot-dingtalk
hubot-dingtalk:支持钉钉Outgoing
Stars: ✭ 29 (+61.11%)
Mutual labels:  adapter
RvAdapter
万能Adapter for RecyclerView.
Stars: ✭ 34 (+88.89%)
Mutual labels:  adapter

EasyAdapter

An simplify and powerful version for hongyangAndroid [baseAdapter].

I remove some class, change some api, rewrite code, to be more simple, support kotlin.

Gradle

implementation 'com.github.li-xiaojun:EasyAdapter:Tag'

Add it in your root build.gradle at the end of repositories:

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

Sample

普通使用:

adapter = object : EasyAdapter<User>(userList, R.layout.item) {
        override fun bind(holder: ViewHolder, user: User, position: Int) {
            with(holder) {
                setText(R.id.tv_name, "name: " + user.name )
                setText(R.id.tv_age, "age: " + user.age)
            }
        }
    }.apply {
        setOnItemClickListener(object : MultiItemTypeAdapter.SimpleOnItemClickListener() {
            override fun onItemClick(view: View, holder: RecyclerView.ViewHolder, position: Int) {
                super.onItemClick(view, holder, position)
                Toast.makeText(this@MainActivity, "position - $position", Toast.LENGTH_SHORT).show()
                userList.removeAt(position)
//                    notifyDataSetChanged()
                notifyItemRemoved(position + headersCount)
            }
        })
        addHeaderView(createView("Header - 1,点我在头部添加一条数据"))
        addHeaderView(createView("Header - 2,点我在头部添加一条数据"))
        addFootView(createView("Footer - 1,点我在末尾添加一条数据", true))
        addFootView(createView("Footer - 2,点我在末尾添加一条数据", true))
        recyclerView.adapter = this
    }

多条目:

multiItemTypeAdapter = MultiItemTypeAdapter<User>(userList)
    .apply {
        addItemDelegate(OneDelegate())
        addItemDelegate(TwoDelegate())
        addHeaderView(createView("Multi Header view1111"))
        addHeaderView(createView("Multi Header view22222"))
        addFootView(createView("Multi Footer view"))
        setOnItemClickListener(object : MultiItemTypeAdapter.OnItemClickListener {
            override fun onItemClick(view: View, holder: RecyclerView.ViewHolder, position: Int) {
                Toast.makeText(this@MainActivity, "position: $position", Toast.LENGTH_SHORT).show()
            }

            override fun onItemLongClick(view: View, holder: RecyclerView.ViewHolder, position: Int): Boolean {
                return false
            }
        })
        recyclerView.adapter = this
    }

internal inner class OneDelegate : ItemDelegate<User> {
    override val layoutId: Int
        get() = android.R.layout.simple_list_item_1

    override fun isThisType(item: User, position: Int): Boolean {
        return position % 2 != 0
    }
    override fun bind(holder: ViewHolder, user: User, position: Int) {
        holder.setText(android.R.id.text1, "name: " + user.name + " - " + position)
    }
}

internal inner class TwoDelegate : ItemDelegate<User> {
    override val layoutId: Int
        get() = android.R.layout.simple_list_item_1

    override fun isThisType(item: User, position: Int): Boolean {
        return position % 2 == 0
    }
    override fun bind(holder: ViewHolder, user: User, position: Int) {
        holder.setText(android.R.id.text1, "age: " + user.age)
        holder.getView<View>(android.R.id.text1).setBackgroundColor(Color.RED)
    }
}
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].