Skip to content

Releases: amirisback/frogo-recycler-view

Release v4.1.1

14 Apr 10:50
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.1.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.1.1'
}

<Option 2> Kotlin DSL Gradle

dependencies {
    // library frogo-recycler-view
    implementation("com.github.amirisback:frogo-recycler-view:4.1.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.1.0

11 Apr 18:31
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.1.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.1.0'
}

<Option 2> Kotlin DSL Gradle

dependencies {
    // library frogo-recycler-view
    implementation("com.github.amirisback:frogo-recycler-view:4.1.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.0.8

07 Apr 10:59
Compare
Choose a tag to compare

Release v4.0.7

29 Mar 10:03
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.0.7

What's New??

* Enhance Performance *
* Update Build Gradle Style Latest Version *

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.0.7'
}

<Option 2> Kotlin DSL Gradle

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

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)

<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<ExampleModel> {
       override fun setupData(): List<ExampleModel> {
           // Setup data FrogoRecyclerView
           return dataBuilderRClass
       }

       override fun setupCustomView(): Int {
           // Setup Custom View
           return R.layout.frogo_rv_list_type_1
       }

       override fun setupEmptyView(): Int? {
           // Setup Empty View
           return null
       }

       override fun setupLayoutManager(context: Context): RecyclerView.LayoutManager {
           // Setup Layout Manager of FrogoRecyclerView
           return FrogoLayoutManager.linearLayoutVertical(context)
       }

       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)
       }
   })
}

<Option 4> Kotlin Builder (ViewBinding)

Click for detail!
private fun setupRvBuilderBi...
Read more

Release v4.0.5

09 Mar 06:01
Compare
Choose a tag to compare

ScreenShoot Apps

About This Project

Android Arsenal
JitPack
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.0.5

What's New??

* Enhance Performance *
* Update Build Gradle Style Latest Version *

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 { url = uri("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.0.5'
}

<Option 2> Kotlin DSL Gradle

dependencies {
    // library frogo-recycler-view
    implementation("com.github.amirisback:frogo-recycler-view:4.0.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)

<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<ExampleModel> {
       override fun setupData(): List<ExampleModel> {
           // Setup data FrogoRecyclerView
           return dataBuilderRClass
       }

       override fun setupCustomView(): Int {
           // Setup Custom View
           return R.layout.frogo_rv_list_type_1
       }

       override fun setupEmptyView(): Int? {
           // Setup Empty View
           return null
       }

       override fun setupLayoutManager(context: Context): RecyclerView.LayoutManager {
           // Setup Layout Manager of FrogoRecyclerView
           return FrogoLayoutManager.linearLayoutVertical(context)
       }

       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)
       }
   })
}

<Option 4> Kotlin Builder (ViewBinding)

Click for detail!
private fun setupRvBuilderBinding() {
    binding.frogoRecyclerView.builderBinding(object :
        IFrogoBuilderRvBinding<ExampleModel, FrogoRvListType1Binding> {
        override fun setupData(): List<ExampleModel> {
            // Setup data FrogoRecyclerView
            return dataBuilderBinding
        }

        override fun setupLayoutManager(context: Context): RecyclerView.LayoutManager {
            // Setup Layout Manager of FrogoRecyclerView
            return FrogoLayoutM...
Read more

Release v4.0.4

25 Feb 01:32
Compare
Choose a tag to compare

ScreenShoot Apps

About This Project

Android Arsenal
JitPack
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.0.4

What's New??

* Enhance Performance *
* Update Build Gradle Style Latest Version *

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 { url = uri("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.0.4'
}

<Option 2> Kotlin DSL Gradle

dependencies {
    // library frogo-recycler-view
    implementation("com.github.amirisback:frogo-recycler-view:4.0.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)

<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<ExampleModel> {
       override fun setupData(): List<ExampleModel> {
           // Setup data FrogoRecyclerView
           return dataBuilderRClass
       }

       override fun setupCustomView(): Int {
           // Setup Custom View
           return R.layout.frogo_rv_list_type_1
       }

       override fun setupEmptyView(): Int? {
           // Setup Empty View
           return null
       }

       override fun setupLayoutManager(context: Context): RecyclerView.LayoutManager {
           // Setup Layout Manager of FrogoRecyclerView
           return FrogoLayoutManager.linearLayoutVertical(context)
       }

       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)
       }
   })
}

<Option 4> Kotlin Builder (ViewBinding)

Click for detail!
private fun setupRvBuilderBinding() {
    binding.frogoRecyclerView.builderBinding(object :
        IFrogoBuilderRvBinding<ExampleModel, FrogoRvListType1Binding> {
        override fun setupData(): List<ExampleModel> {
            // Setup data FrogoRecyclerView
            return dataBuilderBinding
        }

        override fun setupLayoutManager(context: Context): RecyclerView.LayoutManager {
            // Setup Layout Manager of FrogoRecyclerView
            return FrogoLayoutM...
Read more

Release v4.0.3

16 Feb 08:56
Compare
Choose a tag to compare

ScreenShoot Apps

About This Project

Android Arsenal
JitPack
Medium Badge

  • Available on Google Dev Library 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.0.3

What's New??

* Enhance Performance *
* Update Build Gradle Style Latest Version *

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 { url = uri("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.0.3'
}

<Option 2> Kotlin DSL Gradle

dependencies {
    // library frogo-recycler-view
    implementation("com.github.amirisback:frogo-recycler-view:4.0.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)

<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<ExampleModel> {
       override fun setupData(): List<ExampleModel> {
           // Setup data FrogoRecyclerView
           return dataBuilderRClass
       }

       override fun setupCustomView(): Int {
           // Setup Custom View
           return R.layout.frogo_rv_list_type_1
       }

       override fun setupEmptyView(): Int? {
           // Setup Empty View
           return null
       }

       override fun setupLayoutManager(context: Context): RecyclerView.LayoutManager {
           // Setup Layout Manager of FrogoRecyclerView
           return FrogoLayoutManager.linearLayoutVertical(context)
       }

       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)
       }
   })
}

<Option 4> Kotlin Builder (ViewBinding)

Click for detail!
private fun setupRvBuilderBinding() {
    binding.frogoRecyclerView.builderBinding(object :
        IFrogoBuilderRvBinding<ExampleModel, FrogoRvListType1Binding> {
        override fun setupData(): List<ExampleModel> {
            // Setup data FrogoRecyclerView
            return dataBuilderBinding
        }

        override fun setupLayoutManager(context: Context): RecyclerView.LayoutManager {
            // Setup Layout Manager of FrogoRecyclerView
            return FrogoLayoutManager.linearLayoutVertical(context)
        }

        override fun setupInitComponent(
            binding: FrogoRvListType1Binding,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            binding.frogoRvListType1TvTitle.text = data.na...
Read more

Release v4.0.2

12 Feb 14:46
Compare
Choose a tag to compare

ScreenShoot Apps

About This Project

Android Arsenal
JitPack
Medium Badge

  • Available on Google Dev Library 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.0.2

What's New??

* Enhance Performance *
* Update Build Gradle Style Latest Version *

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 { url = uri("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.0.2'
}

<Option 2> Kotlin DSL Gradle

dependencies {
    // library frogo-recycler-view
    implementation("com.github.amirisback:frogo-recycler-view:4.0.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)

<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<ExampleModel> {
       override fun setupData(): List<ExampleModel> {
           // Setup data FrogoRecyclerView
           return dataBuilderRClass
       }

       override fun setupCustomView(): Int {
           // Setup Custom View
           return R.layout.frogo_rv_list_type_1
       }

       override fun setupEmptyView(): Int? {
           // Setup Empty View
           return null
       }

       override fun setupLayoutManager(context: Context): RecyclerView.LayoutManager {
           // Setup Layout Manager of FrogoRecyclerView
           return FrogoLayoutManager.linearLayoutVertical(context)
       }

       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)
       }
   })
}

<Option 4> Kotlin Builder (ViewBinding)

Click for detail!
private fun setupRvBuilderBinding() {
    binding.frogoRecyclerView.builderBinding(object :
        IFrogoBuilderRvBinding<ExampleModel, FrogoRvListType1Binding> {
        override fun setupData(): List<ExampleModel> {
            // Setup data FrogoRecyclerView
            return dataBuilderBinding
        }

        override fun setupLayoutManager(context: Context): RecyclerView.LayoutManager {
            // Setup Layout Manager of FrogoRecyclerView
            return FrogoLayoutManager.linearLayoutVertical(context)
        }

        override fun setupInitComponent(
            binding: FrogoRvListType1Binding,
            data: ExampleModel,
            position: Int,
            notifyListener: FrogoRecyclerNotifyListener<ExampleModel>
        ) {
            binding.frogoRvListType1TvTitle.text = data.na...
Read more

Release v4.0.1

29 Jan 16:10
Compare
Choose a tag to compare

ScreenShoot Apps

About This Project

Android Arsenal
JitPack
Medium Badge

  • Available on Google Dev Library Click Here
  • 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.0.1

What's New??

* Update Build Gradle to 7.1.0 *
* Update Frogo Android UI Kit *
* Enhance Performance *
* FrogoRecyclerCompose - FrogoLazyColumn *
* FrogoRecyclerCompose - FrogoLazyRow *
* FrogoRecyclerCompose - FrogoLazyFixedGrid *
* FrogoRecyclerCompose - FrogoLazyAdaptiveGrid *
* Migrate From Groovy to Kotlin DSL *
* IFrogoViewAdapter, IFrogoBindingAdapter, IFrogoSingleRv *

New Function on FrogoRecyclerView

// Notify Data List
fun frogoNotifyData() : MutableList<T>

// Notify Data Set Changed
fun frogoNotifyDataSetChanged()

// Notify Data Item Changed
fun frogoNotifyItemChanged(data: T, position: Int, payload: Any)

// Notify Data Item Changed
fun frogoNotifyItemChanged(data: T, position: Int)

// Notify Data Item Inserted
fun frogoNotifyItemInserted(data: T, position: Int)

// Notify Data Item Moved
fun frogoNotifyItemMoved(data: T, fromPosition: Int, toPosition: Int)

// Notify Data Item Range Changed
fun frogoNotifyItemRangeChanged(data: List<T>, positionStart: Int, payload: Any)

// Notify Data Item Range Changed
fun frogoNotifyItemRangeChanged(data: List<T>, positionStart: Int)

// Notify Data Item Range Inserted
fun frogoNotifyItemRangeInserted(data: List<T>, positionStart: Int)

// Notify Data Item Range Removed
fun frogoNotifyItemRangeRemoved(positionStart: Int, itemCount: Int)

// Notify Data Item Removed
fun frogoNotifyItemRemoved(position: Int)

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 { url = uri("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.0.1'
}

<Option 2> Kotlin DSL Gradle

dependencies {
    // library frogo-recycler-view
    implementation("com.github.amirisback:frogo-recycler-view:4.0.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)

<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<ExampleModel> {
       override fun setupData(): List<ExampleModel> {
           // Setup data FrogoRecyclerView
           return dataBuilderRClass
       }

       override fun setupCustomView(): Int {
           // Setup Custom View
           return R.layout.frogo_rv_list_type_1
       }

       override fun setupEmptyView(): Int? {
           // Setup Empty View
           return null
       }

       override fun setupLayoutManager(context: Context): RecyclerView.LayoutManager {
           // Setup Layout Manager of FrogoRecyclerView
           return FrogoLayoutManager.linearLayoutVertical(context)
       }

       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)
       }

       o...
Read more

Release v4.0.0

11 Dec 18:00
Compare
Choose a tag to compare

ScreenShoot Apps

About This Project

Android Arsenal
JitPack
Medium Badge

  • Available on Google Dev Library Click Here
  • 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.0.0

What's New??

* Update Build Gradle to 7.0.4 *
* Update Frogo Android UI Kit *
* Enhance Performance *
* FrogoRecyclerCompose - FrogoLazyColumn *
* FrogoRecyclerCompose - FrogoLazyRow *
* FrogoRecyclerCompose - FrogoLazyFixedGrid *
* FrogoRecyclerCompose - FrogoLazyAdaptiveGrid *
* Migrate From Groovy to Kotlin DSL *
* IFrogoViewAdapter, IFrogoBindingAdapter, IFrogoSingleRv *

New Function on FrogoRecyclerView

    // Notify Data List
    fun frogoNotifyData() : MutableList<T>

    // Notify Data Set Changed
    fun frogoNotifyDataSetChanged()

    // Notify Data Item Changed
    fun frogoNotifyItemChanged(data: T, position: Int, payload: Any)

    // Notify Data Item Changed
    fun frogoNotifyItemChanged(data: T, position: Int)

    // Notify Data Item Inserted
    fun frogoNotifyItemInserted(data: T, position: Int)

    // Notify Data Item Moved
    fun frogoNotifyItemMoved(data: T, fromPosition: Int, toPosition: Int)

    // Notify Data Item Range Changed
    fun frogoNotifyItemRangeChanged(data: List<T>, positionStart: Int, payload: Any)

    // Notify Data Item Range Changed
    fun frogoNotifyItemRangeChanged(data: List<T>, positionStart: Int)

    // Notify Data Item Range Inserted
    fun frogoNotifyItemRangeInserted(data: List<T>, positionStart: Int)

    // Notify Data Item Range Removed
    fun frogoNotifyItemRangeRemoved(positionStart: Int, itemCount: Int)

    // Notify Data Item Removed
    fun frogoNotifyItemRemoved(position: Int)

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 { url = uri("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.0.0'
}

<Option 2> Kotlin DSL Gradle

dependencies {
    // library frogo-recycler-view
    implementation("com.github.amirisback:frogo-recycler-view:4.0.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)

<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<ExampleModel> {
       override fun setupData(): List<ExampleModel> {
           // Setup data FrogoRecyclerView
           return dataBuilderRClass
       }

       override fun setupCustomView(): Int {
           // Setup Custom View
           return R.layout.frogo_rv_list_type_1
       }

       override fun setupEmptyView(): Int? {
           // Setup Empty View
           return null
       }

       override fun setupLayoutManager(context: Context): RecyclerView.LayoutManager {
           // Setup Layout Manager of FrogoRecyclerView
           return FrogoLayoutManager.linearLayoutVertical(context)
       }

       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("...
Read more