Skip to content

Releases: amirisback/frogo-recycler-view

Release v4.4.1

25 Mar 01:28
Compare
Choose a tag to compare

Fixing Bug :

  • Remove Item Using Diff Util

Release v4.4.0-Beta

24 Mar 23:37
Compare
Choose a tag to compare

What's Changed

Full Changelog: 4.3.6...4.4.0-Beta

Release v4.3.6

30 Oct 18:48
Compare
Choose a tag to compare

Release v4.3.5

19 Apr 09:57
Compare
Choose a tag to compare

App Screenshots

About This Project

Android Arsenal
JitPack
Android CI
Scan with Detekt
Medium Badge

  • Avaliable on Play Store Click Here
  • Available on Google Dev Library Click Here
  • Privacy Policy Click Here
  • LICENSE Click Here
  • Easy RecyclerView Implementation
  • RecyclerView No Adapter (Adapter Has Been Handled)
  • RecyclerView No Adapter Using ViewBinding Adapter
  • RecyclerView Multi-View-Type (Stable - Multi ViewHolder)
  • Using Kotlin DSL build.gradle.kts
  • Elegant call using injector()
  • Shimmer Effect, Empty View Effect, Nested Recycler View, Progress Recycler View

App Screenshots

Nested RecyclerView Frogo Shimmer Frogo Multi View Simple Empty View

Version Release

This Is Latest Release

$version_release = 4.3.5

What's New??

* Enhance Performance *
* Update Build Gradle Style Latest Version *
* Add Kotlin Ext For RecyclerView *

Compose Tutorial - FrogoRecyclerCompose Click Here

Download this project

Step 1. Add the JitPack repository to your build file (build.gradle : Project)

<Option 1> Groovy Gradle

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

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

<Option 2> Kotlin DSL Gradle

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

allprojects {
    repositories {
        ...
        maven("https://jitpack.io")
    }
}

Step 2. Add the dependency (build.gradle : Module)

<Option 1> Groovy Gradle

dependencies {
    // library frogo-recycler-view
    implementation 'com.github.amirisback:frogo-recycler-view:4.3.5'
}

<Option 2> Kotlin DSL Gradle

dependencies {
    // library frogo-recycler-view
    implementation("com.github.amirisback:frogo-recycler-view:4.3.5")
}

Step 3. Create xml view

<com.frogobox.recycler.widget.FrogoRecyclerView
    android:id="@+id/frogo_recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

Step 4. Setup requirement No Adapter (You can choose 1 of the 4 options below)

Special Offering RecyclerView Kotlin Ext

Click for detail!

No Need Change XML to FrogoRecyclerView

private fun setupRecyclerView(listData: List<Article>) {

    val adapterCallback = object :
        IFrogoViewAdapter<Article> {
        override fun setupInitComponent(
            view: View,
            data: Article,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<Article>
        ) {
            // Init component content item recyclerview
            view.findViewById<TextView>(R.id.frogo_rv_list_type_8_tv_title).text = data.title
            view.findViewById<TextView>(R.id.frogo_rv_list_type_8_tv_subtitle).text = data.description
            view.findViewById<ImageView>(R.id.frogo_rv_list_type_8_civ_poster)
                .glideLoad(data.urlToImage)
        }

        override fun onItemClicked(
            view: View,
            data: Article,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<Article>
        ) {
            // setup item clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            data.title?.let { showToast(it) }
        }

        override fun onItemLongClicked(
            view: View,
            data: Article,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<Article>
        ) {
            // setup item long clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
        }
    }

    binding.rv.injector<Article>()
        .addData(listData)
        .addCustomView(R.layout.frogo_rv_list_type_8)
        .addEmptyView(null)
        .addCallback(adapterCallback)
        .createLayoutLinearVertical(false)
        .build()
}

<Option 1> Kotlin Injector (R class)

Click for detail!
private fun setupFrogoRecyclerView() {

    val adapterCallback = object :
        IFrogoViewAdapter<ExampleModel> {
        override fun setupInitComponent(
            view: View,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // Init component content item recyclerview
            view.findViewById<TextView>(R.id.frogo_rv_list_type_1_tv_title).text = data.name
        }

        override fun onItemClicked(
            view: View,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }

        override fun onItemLongClicked(
            view: View,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item long clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }
    }

    binding.frogoRecyclerView
        .injector<ExampleModel>()
        .addData(listData())
        .addCustomView(R.layout.frogo_rv_list_type_1)
        .addEmptyView(null)
        .addCallback(adapterCallback)
        .createLayoutLinearVertical(false)
        .build()
}

<Option 2> Kotlin Injector (ViewBinding) Can't use emptyView

Click for detail!
private fun setupFrogoRecyclerBinding() {

    val adapterCallback = object : IFrogoBindingAdapter<ExampleModel, FrogoRvListType1Binding> {
        override fun setupInitComponent(
            binding: FrogoRvListType1Binding,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            binding.frogoRvListType1TvTitle.text = data.name
        }

        override fun setViewBinding(parent: ViewGroup): FrogoRvListType1Binding {
            return FrogoRvListType1Binding.inflate(
                LayoutInflater.from(parent.context),
                parent,
                false
            )
        }

        override fun onItemClicked(
            binding: FrogoRvListType1Binding,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }

        override fun onItemLongClicked(
            binding: FrogoRvListType1Binding,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item long clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }
    }

    binding.frogoRecyclerView.injectorBinding<ExampleModel, FrogoRvListType1Binding>()
        .addData(listDataBinding())
        .addCallback(adapterCallback)
        .createLayoutLinearVertical(false)
        .build()

}

...

Read more

Release v4.3.4

18 Mar 20:40
Compare
Choose a tag to compare

ScreenShoot Apps

About This Project

Android Arsenal
JitPack
Android CI
Scan with Detekt
Medium Badge

  • Avaliable on Play Store Click Here
  • Available on Google Dev Library Click Here
  • Privacy Policy Click Here
  • LICENSE Click Here
  • Easy RecyclerView Implementation
  • RecyclerView No Adapter (Adapter Has Been Handled)
  • RecyclerView No Adapter Using ViewBinding Adapter
  • RecyclerView Multi-View-Type (Stable - Multi ViewHolder)
  • Using Kotlin DSL build.gradle.kts
  • Elegant call using injector()
  • Shimmer Effect, Empty View Effect, Nested Recycler View, Progress Recycler View

Screen Shoot Apps

Nested RecyclerView Frogo Shimmer Frogo Multi View Simple Empty View

Version Release

This Is Latest Release

$version_release = 4.3.4

What's New??

* Enhance Performance *
* Update Build Gradle Style Latest Version *
* Add Kotlin Ext For RecyclerView *

Compose Tutorial - FrogoRecyclerCompose Click Here

Download this project

Step 1. Add the JitPack repository to your build file (build.gradle : Project)

<Option 1> Groovy Gradle

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

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

<Option 2> Kotlin DSL Gradle

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

allprojects {
    repositories {
        ...
        maven("https://jitpack.io")
    }
}

Step 2. Add the dependency (build.gradle : Module)

<Option 1> Groovy Gradle

dependencies {
    // library frogo-recycler-view
    implementation 'com.github.amirisback:frogo-recycler-view:4.3.4'
}

<Option 2> Kotlin DSL Gradle

dependencies {
    // library frogo-recycler-view
    implementation("com.github.amirisback:frogo-recycler-view:4.3.4")
}

Step 3. Create xml view

<com.frogobox.recycler.widget.FrogoRecyclerView
    android:id="@+id/frogo_recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

Step 4. Setup requirement No Adapter (You can choose 1 of the 4 options below)

Special Offering RecyclerView Kotlin Ext

Click for detail!

No Need Change XML to FrogoRecyclerView

private fun setupRecyclerView(listData: List<Article>) {

    val adapterCallback = object :
        IFrogoViewAdapter<Article> {
        override fun setupInitComponent(
            view: View,
            data: Article,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<Article>
        ) {
            // Init component content item recyclerview
            view.findViewById<TextView>(R.id.frogo_rv_list_type_8_tv_title).text = data.title
            view.findViewById<TextView>(R.id.frogo_rv_list_type_8_tv_subtitle).text = data.description
            view.findViewById<ImageView>(R.id.frogo_rv_list_type_8_civ_poster)
                .glideLoad(data.urlToImage)
        }

        override fun onItemClicked(
            view: View,
            data: Article,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<Article>
        ) {
            // setup item clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            data.title?.let { showToast(it) }
        }

        override fun onItemLongClicked(
            view: View,
            data: Article,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<Article>
        ) {
            // setup item long clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
        }
    }

    binding.rv.injector<Article>()
        .addData(listData)
        .addCustomView(R.layout.frogo_rv_list_type_8)
        .addEmptyView(null)
        .addCallback(adapterCallback)
        .createLayoutLinearVertical(false)
        .build()
}

<Option 1> Kotlin Injector (R class)

Click for detail!
private fun setupFrogoRecyclerView() {

    val adapterCallback = object :
        IFrogoViewAdapter<ExampleModel> {
        override fun setupInitComponent(
            view: View,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // Init component content item recyclerview
            view.findViewById<TextView>(R.id.frogo_rv_list_type_1_tv_title).text = data.name
        }

        override fun onItemClicked(
            view: View,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }

        override fun onItemLongClicked(
            view: View,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item long clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }
    }

    binding.frogoRecyclerView
        .injector<ExampleModel>()
        .addData(listData())
        .addCustomView(R.layout.frogo_rv_list_type_1)
        .addEmptyView(null)
        .addCallback(adapterCallback)
        .createLayoutLinearVertical(false)
        .build()
}

<Option 2> Kotlin Injector (ViewBinding) Can't use emptyView

Click for detail!
private fun setupFrogoRecyclerBinding() {

    val adapterCallback = object : IFrogoBindingAdapter<ExampleModel, FrogoRvListType1Binding> {
        override fun setupInitComponent(
            binding: FrogoRvListType1Binding,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            binding.frogoRvListType1TvTitle.text = data.name
        }

        override fun setViewBinding(parent: ViewGroup): FrogoRvListType1Binding {
            return FrogoRvListType1Binding.inflate(
                LayoutInflater.from(parent.context),
                parent,
                false
            )
        }

        override fun onItemClicked(
            binding: FrogoRvListType1Binding,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }

        override fun onItemLongClicked(
            binding: FrogoRvListType1Binding,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item long clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }
    }

    binding.frogoRecyclerView.injectorBinding<ExampleModel, FrogoRvListType1Binding>()
        .addData(listDataBinding())
        .addCallback(adapterCallback)
        .createLayoutLinearVertical(false)
        .build()

}

...

Read more

Release v4.3.3

16 Jan 09:28
Compare
Choose a tag to compare

ScreenShoot Apps

About This Project

Android Arsenal
JitPack
Android CI
Scan with Detekt
Medium Badge

  • Avaliable on Play Store Click Here
  • Available on Google Dev Library Click Here
  • Privacy Policy Click Here
  • LICENSE Click Here
  • Easy RecyclerView Implementation
  • RecyclerView No Adapter (Adapter Has Been Handled)
  • RecyclerView No Adapter Using ViewBinding Adapter
  • RecyclerView Multi-View-Type (Stable - Multi ViewHolder)
  • Using Kotlin DSL build.gradle.kts
  • Elegant call using injector()
  • Shimmer Effect, Empty View Effect, Nested Recycler View, Progress Recycler View

Screen Shoot Apps

Nested RecyclerView Frogo Shimmer Frogo Multi View Simple Empty View

Version Release

This Is Latest Release

$version_release = 4.3.3

What's New??

* Enhance Performance *
* Update Build Gradle Style Latest Version *
* Add Kotlin Ext For RecyclerView *

Compose Tutorial - FrogoRecyclerCompose Click Here

Download this project

Step 1. Add the JitPack repository to your build file (build.gradle : Project)

<Option 1> Groovy Gradle

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

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

<Option 2> Kotlin DSL Gradle

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

allprojects {
    repositories {
        ...
        maven("https://jitpack.io")
    }
}

Step 2. Add the dependency (build.gradle : Module)

<Option 1> Groovy Gradle

dependencies {
    // library frogo-recycler-view
    implementation 'com.github.amirisback:frogo-recycler-view:4.3.3'
}

<Option 2> Kotlin DSL Gradle

dependencies {
    // library frogo-recycler-view
    implementation("com.github.amirisback:frogo-recycler-view:4.3.3")
}

Step 3. Create xml view

<com.frogobox.recycler.widget.FrogoRecyclerView
    android:id="@+id/frogo_recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

Step 4. Setup requirement No Adapter (You can choose 1 of the 4 options below)

Special Offering RecyclerView Kotlin Ext

Click for detail!

No Need Change XML to FrogoRecyclerView

private fun setupRecyclerView(listData: List<Article>) {

    val adapterCallback = object :
        IFrogoViewAdapter<Article> {
        override fun setupInitComponent(
            view: View,
            data: Article,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<Article>
        ) {
            // Init component content item recyclerview
            view.findViewById<TextView>(R.id.frogo_rv_list_type_8_tv_title).text = data.title
            view.findViewById<TextView>(R.id.frogo_rv_list_type_8_tv_subtitle).text = data.description
            view.findViewById<ImageView>(R.id.frogo_rv_list_type_8_civ_poster)
                .glideLoad(data.urlToImage)
        }

        override fun onItemClicked(
            view: View,
            data: Article,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<Article>
        ) {
            // setup item clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            data.title?.let { showToast(it) }
        }

        override fun onItemLongClicked(
            view: View,
            data: Article,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<Article>
        ) {
            // setup item long clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
        }
    }

    binding.rv.injector<Article>()
        .addData(listData)
        .addCustomView(R.layout.frogo_rv_list_type_8)
        .addEmptyView(null)
        .addCallback(adapterCallback)
        .createLayoutLinearVertical(false)
        .build()
}

<Option 1> Kotlin Injector (R class)

Click for detail!
private fun setupFrogoRecyclerView() {

    val adapterCallback = object :
        IFrogoViewAdapter<ExampleModel> {
        override fun setupInitComponent(
            view: View,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // Init component content item recyclerview
            view.findViewById<TextView>(R.id.frogo_rv_list_type_1_tv_title).text = data.name
        }

        override fun onItemClicked(
            view: View,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }

        override fun onItemLongClicked(
            view: View,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item long clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }
    }

    binding.frogoRecyclerView
        .injector<ExampleModel>()
        .addData(listData())
        .addCustomView(R.layout.frogo_rv_list_type_1)
        .addEmptyView(null)
        .addCallback(adapterCallback)
        .createLayoutLinearVertical(false)
        .build()
}

<Option 2> Kotlin Injector (ViewBinding) Can't use emptyView

Click for detail!
private fun setupFrogoRecyclerBinding() {

    val adapterCallback = object : IFrogoBindingAdapter<ExampleModel, FrogoRvListType1Binding> {
        override fun setupInitComponent(
            binding: FrogoRvListType1Binding,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            binding.frogoRvListType1TvTitle.text = data.name
        }

        override fun setViewBinding(parent: ViewGroup): FrogoRvListType1Binding {
            return FrogoRvListType1Binding.inflate(
                LayoutInflater.from(parent.context),
                parent,
                false
            )
        }

        override fun onItemClicked(
            binding: FrogoRvListType1Binding,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }

        override fun onItemLongClicked(
            binding: FrogoRvListType1Binding,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item long clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }
    }

    binding.frogoRecyclerView.injectorBinding<ExampleModel, FrogoRvListType1Binding>()
        .addData(listDataBinding())
        .addCallback(adapterCallback)
        .createLayoutLinearVertical(false)
        .build()

}

<Option 3> Kotlin Builder (R class)

Click for detail!
private fun setupRvBuilder() {
   binding.frogoRecyclerView.builde...
Read more

Release v4.3.2

10 Dec 12:40
Compare
Choose a tag to compare

ScreenShoot Apps

About This Project

Android Arsenal
JitPack
Android CI
Scan with Detekt
Medium Badge

  • Avaliable on Play Store Click Here
  • Available on Google Dev Library Click Here
  • Privacy Policy Click Here
  • LICENSE Click Here
  • Easy RecyclerView Implementation
  • RecyclerView No Adapter (Adapter Has Been Handled)
  • RecyclerView No Adapter Using ViewBinding Adapter
  • RecyclerView Multi-View-Type (Stable - Multi ViewHolder)
  • Using Kotlin DSL build.gradle.kts
  • Elegant call using injector()
  • Shimmer Effect, Empty View Effect, Nested Recycler View, Progress Recycler View
  • Jetpack Compose UI (Beta Experimental) - FrogoRecyclerCompose Click Here

Screen Shoot Apps

Nested RecyclerView Frogo Shimmer Frogo Multi View Simple Empty View

Version Release

This Is Latest Release

$version_release = 4.3.2

What's New??

* Enhance Performance *
* Update Build Gradle Style Latest Version *
* Add Kotlin Ext For RecyclerView *

Compose Tutorial - FrogoRecyclerCompose Click Here

Download this project

Step 1. Add the JitPack repository to your build file (build.gradle : Project)

<Option 1> Groovy Gradle

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

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

<Option 2> Kotlin DSL Gradle

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

allprojects {
    repositories {
        ...
        maven("https://jitpack.io")
    }
}

Step 2. Add the dependency (build.gradle : Module)

<Option 1> Groovy Gradle

dependencies {
    // library frogo-recycler-view
    implementation 'com.github.amirisback:frogo-recycler-view:4.3.2'
}

<Option 2> Kotlin DSL Gradle

dependencies {
    // library frogo-recycler-view
    implementation("com.github.amirisback:frogo-recycler-view:4.3.2")
}

Step 3. Create xml view

<com.frogobox.recycler.widget.FrogoRecyclerView
    android:id="@+id/frogo_recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

Step 4. Setup requirement No Adapter (You can choose 1 of the 4 options below)

Special Offering RecyclerView Kotlin Ext

Click for detail!

No Need Change XML to FrogoRecyclerView

private fun setupRecyclerView(listData: List<Article>) {

    val adapterCallback = object :
        IFrogoViewAdapter<Article> {
        override fun setupInitComponent(
            view: View,
            data: Article,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<Article>
        ) {
            // Init component content item recyclerview
            view.findViewById<TextView>(R.id.frogo_rv_list_type_8_tv_title).text = data.title
            view.findViewById<TextView>(R.id.frogo_rv_list_type_8_tv_subtitle).text = data.description
            view.findViewById<ImageView>(R.id.frogo_rv_list_type_8_civ_poster)
                .glideLoad(data.urlToImage)
        }

        override fun onItemClicked(
            view: View,
            data: Article,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<Article>
        ) {
            // setup item clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            data.title?.let { showToast(it) }
        }

        override fun onItemLongClicked(
            view: View,
            data: Article,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<Article>
        ) {
            // setup item long clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
        }
    }

    binding.rv.injector<Article>()
        .addData(listData)
        .addCustomView(R.layout.frogo_rv_list_type_8)
        .addEmptyView(null)
        .addCallback(adapterCallback)
        .createLayoutLinearVertical(false)
        .build()
}

<Option 1> Kotlin Injector (R class)

Click for detail!
private fun setupFrogoRecyclerView() {

    val adapterCallback = object :
        IFrogoViewAdapter<ExampleModel> {
        override fun setupInitComponent(
            view: View,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // Init component content item recyclerview
            view.findViewById<TextView>(R.id.frogo_rv_list_type_1_tv_title).text = data.name
        }

        override fun onItemClicked(
            view: View,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }

        override fun onItemLongClicked(
            view: View,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item long clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }
    }

    binding.frogoRecyclerView
        .injector<ExampleModel>()
        .addData(listData())
        .addCustomView(R.layout.frogo_rv_list_type_1)
        .addEmptyView(null)
        .addCallback(adapterCallback)
        .createLayoutLinearVertical(false)
        .build()
}

<Option 2> Kotlin Injector (ViewBinding) Can't use emptyView

Click for detail!
private fun setupFrogoRecyclerBinding() {

    val adapterCallback = object : IFrogoBindingAdapter<ExampleModel, FrogoRvListType1Binding> {
        override fun setupInitComponent(
            binding: FrogoRvListType1Binding,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            binding.frogoRvListType1TvTitle.text = data.name
        }

        override fun setViewBinding(parent: ViewGroup): FrogoRvListType1Binding {
            return FrogoRvListType1Binding.inflate(
                LayoutInflater.from(parent.context),
                parent,
                false
            )
        }

        override fun onItemClicked(
            binding: FrogoRvListType1Binding,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }

        override fun onItemLongClicked(
            binding: FrogoRvListType1Binding,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item long clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }
    }

    binding.frogoRecyclerView.injectorBinding<ExampleModel, FrogoRvListType1Binding>()
        .addData(listDataBinding())
        .addCallback(adapterCallback)
        .createLayoutLinearVertical(false)
        .build()

}

<Option 3> Kotlin Builder (R class)

Click for detail!
private fun setupRvBuilder() {
   binding.frogoRecyclerView.builder(object : IFrogoBuilderRv<E...
Read more

Release v4.3.1

14 Aug 17:16
Compare
Choose a tag to compare

ScreenShoot Apps

About This Project

Android Arsenal
JitPack
Android CI
Scan with Detekt
Medium Badge

  • Avaliable on Play Store Click Here
  • Available on Google Dev Library Click Here
  • Privacy Policy Click Here
  • LICENSE Click Here
  • Easy RecyclerView Implementation
  • RecyclerView No Adapter (Adapter Has Been Handled)
  • RecyclerView No Adapter Using ViewBinding Adapter
  • RecyclerView Multi-View-Type (Stable - Multi ViewHolder)
  • Using Kotlin DSL build.gradle.kts
  • Elegant call using injector()
  • Shimmer Effect, Empty View Effect, Nested Recycler View, Progress Recycler View
  • Jetpack Compose UI (Beta Experimental) - FrogoRecyclerCompose Click Here

Screen Shoot Apps

Nested RecyclerView Frogo Shimmer Frogo Multi View Simple Empty View

Version Release

This Is Latest Release

$version_release = 4.3.1

What's New??

* Enhance Performance *
* Update Build Gradle Style Latest Version *
* Add Kotlin Ext For RecyclerView *

Compose Tutorial - FrogoRecyclerCompose Click Here

Download this project

Step 1. Add the JitPack repository to your build file (build.gradle : Project)

<Option 1> Groovy Gradle

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

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

<Option 2> Kotlin DSL Gradle

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

allprojects {
    repositories {
        ...
        maven("https://jitpack.io")
    }
}

Step 2. Add the dependency (build.gradle : Module)

<Option 1> Groovy Gradle

dependencies {
    // library frogo-recycler-view
    implementation 'com.github.amirisback:frogo-recycler-view:4.3.1'
}

<Option 2> Kotlin DSL Gradle

dependencies {
    // library frogo-recycler-view
    implementation("com.github.amirisback:frogo-recycler-view:4.3.1")
}

Step 3. Create xml view

<com.frogobox.recycler.widget.FrogoRecyclerView
    android:id="@+id/frogo_recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

Step 4. Setup requirement No Adapter (You can choose 1 of the 4 options below)

Special Offering RecyclerView Kotlin Ext

Click for detail!

No Need Change XML to FrogoRecyclerView

private fun setupRecyclerView(listData: List<Article>) {

    val adapterCallback = object :
        IFrogoViewAdapter<Article> {
        override fun setupInitComponent(
            view: View,
            data: Article,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<Article>
        ) {
            // Init component content item recyclerview
            view.findViewById<TextView>(R.id.frogo_rv_list_type_8_tv_title).text = data.title
            view.findViewById<TextView>(R.id.frogo_rv_list_type_8_tv_subtitle).text = data.description
            view.findViewById<ImageView>(R.id.frogo_rv_list_type_8_civ_poster)
                .glideLoad(data.urlToImage)
        }

        override fun onItemClicked(
            view: View,
            data: Article,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<Article>
        ) {
            // setup item clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            data.title?.let { showToast(it) }
        }

        override fun onItemLongClicked(
            view: View,
            data: Article,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<Article>
        ) {
            // setup item long clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
        }
    }

    binding.rv.injector<Article>()
        .addData(listData)
        .addCustomView(R.layout.frogo_rv_list_type_8)
        .addEmptyView(null)
        .addCallback(adapterCallback)
        .createLayoutLinearVertical(false)
        .build()
}

<Option 1> Kotlin Injector (R class)

Click for detail!
private fun setupFrogoRecyclerView() {

    val adapterCallback = object :
        IFrogoViewAdapter<ExampleModel> {
        override fun setupInitComponent(
            view: View,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // Init component content item recyclerview
            view.findViewById<TextView>(R.id.frogo_rv_list_type_1_tv_title).text = data.name
        }

        override fun onItemClicked(
            view: View,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }

        override fun onItemLongClicked(
            view: View,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item long clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }
    }

    binding.frogoRecyclerView
        .injector<ExampleModel>()
        .addData(listData())
        .addCustomView(R.layout.frogo_rv_list_type_1)
        .addEmptyView(null)
        .addCallback(adapterCallback)
        .createLayoutLinearVertical(false)
        .build()
}

<Option 2> Kotlin Injector (ViewBinding) Can't use emptyView

Click for detail!
private fun setupFrogoRecyclerBinding() {

    val adapterCallback = object : IFrogoBindingAdapter<ExampleModel, FrogoRvListType1Binding> {
        override fun setupInitComponent(
            binding: FrogoRvListType1Binding,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            binding.frogoRvListType1TvTitle.text = data.name
        }

        override fun setViewBinding(parent: ViewGroup): FrogoRvListType1Binding {
            return FrogoRvListType1Binding.inflate(
                LayoutInflater.from(parent.context),
                parent,
                false
            )
        }

        override fun onItemClicked(
            binding: FrogoRvListType1Binding,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }

        override fun onItemLongClicked(
            binding: FrogoRvListType1Binding,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item long clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }
    }

    binding.frogoRecyclerView.injectorBinding<ExampleModel, FrogoRvListType1Binding>()
        .addData(listDataBinding())
        .addCallback(adapterCallback)
        .createLayoutLinearVertical(false)
        .build()

}

<Option 3> Kotlin Builder (R class)

Click for detail!
private fun setupRvBuilder() {
   binding.frogoRecyclerView.builder(object : IFrogoBuilderRv<E...
Read more

Release v4.3.0

23 Jul 10:08
Compare
Choose a tag to compare

ScreenShoot Apps

About This Project

Android Arsenal
JitPack
Android CI
Scan with Detekt
Medium Badge

  • Avaliable on Play Store Click Here
  • Available on Google Dev Library Click Here
  • Privacy Policy Click Here
  • LICENSE Click Here
  • Easy RecyclerView Implementation
  • RecyclerView No Adapter (Adapter Has Been Handled)
  • RecyclerView No Adapter Using ViewBinding Adapter
  • RecyclerView Multi-View-Type (Stable - Multi ViewHolder)
  • Using Kotlin DSL build.gradle.kts
  • Elegant call using injector()
  • Shimmer Effect, Empty View Effect, Nested Recycler View, Progress Recycler View
  • Jetpack Compose UI (Beta Experimental) - FrogoRecyclerCompose Click Here

Screen Shoot Apps

Nested RecyclerView Frogo Shimmer Frogo Multi View Simple Empty View

Version Release

This Is Latest Release

$version_release = 4.3.0

What's New??

* Enhance Performance *
* Update Build Gradle Style Latest Version *
* Add Kotlin Ext For RecyclerView *

Compose Tutorial - FrogoRecyclerCompose Click Here

Download this project

Step 1. Add the JitPack repository to your build file (build.gradle : Project)

<Option 1> Groovy Gradle

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

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

<Option 2> Kotlin DSL Gradle

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

allprojects {
    repositories {
        ...
        maven("https://jitpack.io")
    }
}

Step 2. Add the dependency (build.gradle : Module)

<Option 1> Groovy Gradle

dependencies {
    // library frogo-recycler-view
    implementation 'com.github.amirisback:frogo-recycler-view:4.3.0'
}

<Option 2> Kotlin DSL Gradle

dependencies {
    // library frogo-recycler-view
    implementation("com.github.amirisback:frogo-recycler-view:4.3.0")
}

Step 3. Create xml view

<com.frogobox.recycler.widget.FrogoRecyclerView
    android:id="@+id/frogo_recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

Step 4. Setup requirement No Adapter (You can choose 1 of the 4 options below)

Special Offering RecyclerView Kotlin Ext

Click for detail!

No Need Change XML to FrogoRecyclerView

private fun setupRecyclerView(listData: List<Article>) {

    val adapterCallback = object :
        IFrogoViewAdapter<Article> {
        override fun setupInitComponent(
            view: View,
            data: Article,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<Article>
        ) {
            // Init component content item recyclerview
            view.findViewById<TextView>(R.id.frogo_rv_list_type_8_tv_title).text = data.title
            view.findViewById<TextView>(R.id.frogo_rv_list_type_8_tv_subtitle).text = data.description
            view.findViewById<ImageView>(R.id.frogo_rv_list_type_8_civ_poster)
                .glideLoad(data.urlToImage)
        }

        override fun onItemClicked(
            view: View,
            data: Article,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<Article>
        ) {
            // setup item clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            data.title?.let { showToast(it) }
        }

        override fun onItemLongClicked(
            view: View,
            data: Article,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<Article>
        ) {
            // setup item long clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
        }
    }

    binding.rv.injector<Article>()
        .addData(listData)
        .addCustomView(R.layout.frogo_rv_list_type_8)
        .addEmptyView(null)
        .addCallback(adapterCallback)
        .createLayoutLinearVertical(false)
        .build()
}

<Option 1> Kotlin Injector (R class)

Click for detail!
private fun setupFrogoRecyclerView() {

    val adapterCallback = object :
        IFrogoViewAdapter<ExampleModel> {
        override fun setupInitComponent(
            view: View,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // Init component content item recyclerview
            view.findViewById<TextView>(R.id.frogo_rv_list_type_1_tv_title).text = data.name
        }

        override fun onItemClicked(
            view: View,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }

        override fun onItemLongClicked(
            view: View,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item long clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }
    }

    binding.frogoRecyclerView
        .injector<ExampleModel>()
        .addData(listData())
        .addCustomView(R.layout.frogo_rv_list_type_1)
        .addEmptyView(null)
        .addCallback(adapterCallback)
        .createLayoutLinearVertical(false)
        .build()
}

<Option 2> Kotlin Injector (ViewBinding) Can't use emptyView

Click for detail!
private fun setupFrogoRecyclerBinding() {

    val adapterCallback = object : IFrogoBindingAdapter<ExampleModel, FrogoRvListType1Binding> {
        override fun setupInitComponent(
            binding: FrogoRvListType1Binding,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            binding.frogoRvListType1TvTitle.text = data.name
        }

        override fun setViewBinding(parent: ViewGroup): FrogoRvListType1Binding {
            return FrogoRvListType1Binding.inflate(
                LayoutInflater.from(parent.context),
                parent,
                false
            )
        }

        override fun onItemClicked(
            binding: FrogoRvListType1Binding,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }

        override fun onItemLongClicked(
            binding: FrogoRvListType1Binding,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item long clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }
    }

    binding.frogoRecyclerView.injectorBinding<ExampleModel, FrogoRvListType1Binding>()
        .addData(listDataBinding())
        .addCallback(adapterCallback)
        .createLayoutLinearVertical(false)
        .build()

}

<Option 3> Kotlin Builder (R class)

Click for detail!
private fun setupRvBuilder() {
   binding.frogoRecyclerView.builder(object : IFrogoBuilderRv<E...
Read more

Release v4.2.3

20 Jul 16:41
Compare
Choose a tag to compare

ScreenShoot Apps

About This Project

Android Arsenal
JitPack
Android CI
Scan with Detekt
Medium Badge

  • Avaliable on Play Store Click Here
  • Available on Google Dev Library Click Here
  • Privacy Policy Click Here
  • LICENSE Click Here
  • Easy RecyclerView Implementation
  • RecyclerView No Adapter (Adapter Has Been Handled)
  • RecyclerView No Adapter Using ViewBinding Adapter
  • RecyclerView Multi-View-Type (Stable - Multi ViewHolder)
  • Using Kotlin DSL build.gradle.kts
  • Elegant call using injector()
  • Shimmer Effect, Empty View Effect, Nested Recycler View, Progress Recycler View
  • Jetpack Compose UI (Beta Experimental) - FrogoRecyclerCompose Click Here

Screen Shoot Apps

Nested RecyclerView Frogo Shimmer Frogo Multi View Simple Empty View

Version Release

This Is Latest Release

$version_release = 4.2.3

What's New??

* Enhance Performance *
* Update Build Gradle Style Latest Version *
* Add Kotlin Ext For RecyclerView *

Compose Tutorial - FrogoRecyclerCompose Click Here

Download this project

Step 1. Add the JitPack repository to your build file (build.gradle : Project)

<Option 1> Groovy Gradle

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

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

<Option 2> Kotlin DSL Gradle

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

allprojects {
    repositories {
        ...
        maven("https://jitpack.io")
    }
}

Step 2. Add the dependency (build.gradle : Module)

<Option 1> Groovy Gradle

dependencies {
    // library frogo-recycler-view
    implementation 'com.github.amirisback:frogo-recycler-view:4.2.3'
}

<Option 2> Kotlin DSL Gradle

dependencies {
    // library frogo-recycler-view
    implementation("com.github.amirisback:frogo-recycler-view:4.2.3")
}

Step 3. Create xml view

<com.frogobox.recycler.widget.FrogoRecyclerView
    android:id="@+id/frogo_recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

Step 4. Setup requirement No Adapter (You can choose 1 of the 4 options below)

Special Offering RecyclerView Kotlin Ext

Click for detail!

No Need Change XML to FrogoRecyclerView

private fun setupRecyclerView(listData: List<Article>) {

    val adapterCallback = object :
        IFrogoViewAdapter<Article> {
        override fun setupInitComponent(
            view: View,
            data: Article,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<Article>
        ) {
            // Init component content item recyclerview
            view.findViewById<TextView>(R.id.frogo_rv_list_type_8_tv_title).text = data.title
            view.findViewById<TextView>(R.id.frogo_rv_list_type_8_tv_subtitle).text = data.description
            view.findViewById<ImageView>(R.id.frogo_rv_list_type_8_civ_poster)
                .glideLoad(data.urlToImage)
        }

        override fun onItemClicked(
            view: View,
            data: Article,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<Article>
        ) {
            // setup item clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            data.title?.let { showToast(it) }
        }

        override fun onItemLongClicked(
            view: View,
            data: Article,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<Article>
        ) {
            // setup item long clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
        }
    }

    binding.rv.injector<Article>()
        .addData(listData)
        .addCustomView(R.layout.frogo_rv_list_type_8)
        .addEmptyView(null)
        .addCallback(adapterCallback)
        .createLayoutLinearVertical(false)
        .build()
}

<Option 1> Kotlin Injector (R class)

Click for detail!
private fun setupFrogoRecyclerView() {

    val adapterCallback = object :
        IFrogoViewAdapter<ExampleModel> {
        override fun setupInitComponent(
            view: View,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // Init component content item recyclerview
            view.findViewById<TextView>(R.id.frogo_rv_list_type_1_tv_title).text = data.name
        }

        override fun onItemClicked(
            view: View,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }

        override fun onItemLongClicked(
            view: View,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item long clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }
    }

    binding.frogoRecyclerView
        .injector<ExampleModel>()
        .addData(listData())
        .addCustomView(R.layout.frogo_rv_list_type_1)
        .addEmptyView(null)
        .addCallback(adapterCallback)
        .createLayoutLinearVertical(false)
        .build()
}

<Option 2> Kotlin Injector (ViewBinding) Can't use emptyView

Click for detail!
private fun setupFrogoRecyclerBinding() {

    val adapterCallback = object : IFrogoBindingAdapter<ExampleModel, FrogoRvListType1Binding> {
        override fun setupInitComponent(
            binding: FrogoRvListType1Binding,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            binding.frogoRvListType1TvTitle.text = data.name
        }

        override fun setViewBinding(parent: ViewGroup): FrogoRvListType1Binding {
            return FrogoRvListType1Binding.inflate(
                LayoutInflater.from(parent.context),
                parent,
                false
            )
        }

        override fun onItemClicked(
            binding: FrogoRvListType1Binding,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }

        override fun onItemLongClicked(
            binding: FrogoRvListType1Binding,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            // setup item long clicked on frogo recycler view
            FLog.d("Clicked on Position : $position")
            showToast(data.name)
        }
    }

    binding.frogoRecyclerView.injectorBinding<ExampleModel, FrogoRvListType1Binding>()
        .addData(listDataBinding())
        .addCallback(adapterCallback)
        .createLayoutLinearVertical(false)
        .build()

}

<Option 3> Kotlin Builder (R class)

Click for detail!
private fun setupRvBuilder() {
   binding.frogoRecyclerView.builder(object : IFrogoBuilderRv<E...
Read more