• Stars
    star
    152
  • Rank 244,685 (Top 5 %)
  • Language
    Kotlin
  • License
    Apache License 2.0
  • Created almost 5 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

RecyclerView With No Adapter | Available For Jetpack Compose

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

}

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

    })
}

Sample Tutorial

Alert

Big Update :

================================================================================================
>> on Version 4.0.0
- Every listener can get view/binding, position, and notify item change on Adapter
- FrogoRecyclerView can notify item changed
================================================================================================

Cautions :

>> under Version 3.0.1
- Please implement library [frogo-ui-kit](https://github.com/amirisback/frogo-ui-kit) in your project
- We separating resource ui for better maintenance

>> on Version 3.2.0
- If you use version under 3.2.0 you must pay attenttion to package import
- Please re-import package
- Package name [base, parent, boilerplate] updated to core

>> on Version 3.3.0 up
- If you use version under 3.3.0 you must pay attenttion to package import
- Please re-import package
- Package name [base, parent, boilerplate] updated to core
- No more package name [viewrclass, viewbinding, viewshimmer] all in core

Update :

>> on Version 3.2.0
from -> import com.frogobox.recycler.boilerplate.viewrclass.FrogoViewAdapterCallback
to -> import com.frogobox.recycler.core.viewrclass.FrogoViewAdapterCallback

>> on Version 3.3.0 up
from -> import com.frogobox.recycler.core.viewrclass.FrogoViewAdapterCallback
to -> import com.frogobox.recycler.core.IFrogoViewAdapter

>> on Version 3.3.0 up
from -> FrogoViewAdapterCallback
to -> IFrogoViewAdapter

Wiki

Library Helper

Colaborator

Very open to anyone, I'll write your name under this, please contribute by sending an email to me

  • Mail To [email protected]
  • Subject : Github _ [Github-Username-Account] _ [Language] _ [Repository-Name]
  • Example : Github_amirisback_kotlin_admob-helper-implementation

Name Of Contribute

  • Muhammad Faisal Amir
  • Waiting List
  • Waiting List

Waiting for your contribute

Insipiration

Attention !!!

  • Please enjoy and don't forget fork and give a star
  • Don't Forget Follow My Github Account

App Screenshots

More Repositories

1

automated-build-android-app-with-github-action

CI/CD Automated Build Android App Bundle / APK With Github Action
Kotlin
191
star
2

keyboard

Custom Keyboard Like Google Keyboard
Kotlin
104
star
3

frogo-admob

Library Helper For Implementation All Admob Function
Kotlin
78
star
4

frogo-notification

Frogo Notification - Easy Way For Create Notification
Kotlin
49
star
5

nutrition-framework

Skripsi / TA of Muhammad Faisal Amir - Telkom University 2021
Kotlin
42
star
6

desktop-news-app

Playground UI Compose in Desktop Apps
Kotlin
20
star
7

frogo-log

Frogo Log - Custom Log For Your Easy Development Tools
Kotlin
19
star
8

jago-sholat

Muslim Mobile Apps, Aplikasi berbasis android yang di khususkan untuk pencatatan sholat
Java
19
star
9

vpn

Viprox VPN, Easy For Reskin VPN
Java
19
star
10

piano-tiles-clone

Game Piano Tiles Clone (Android Studio) - Kotlin and Java
Kotlin
18
star
11

consumable-code-movie-tmdb-api

Retrofit has been Handled !! || Consumable code for request Public API (TMDb API) || πŸ“š πŸŽ₯
Kotlin
17
star
12

finpro

πŸ“š πŸš€ Finpro - An Android Based Final Project Management System || Proyek Akhir || Skripsi || Manajemen Proyek Akhir - Skripsi || Bimbingan, Monev, Sidang
Java
17
star
13

android-programmer-interview-cheat-sheet

Android Programmer Interview Test Cheat Sheet
12
star
14

minimum-mvvm-koin

MVVM with Simple Example
Kotlin
11
star
15

cleaner

Cleaner Apps Android
Kotlin
11
star
16

jitpack-library-kotlin-dsl-guide

Tutorial For openJDK 11 and AGP 7.0.0+ | Tutorial Multi Library Android in 1 Project | Kotlin DSL .kts
Kotlin
11
star
17

amirisback

Muhammad Faisal Amir Profile Description
JavaScript
10
star
18

awesome-project-catalogue

Check this out !!! all awesome project from amirisback
10
star
19

consumable-code-news-api

πŸ“° πŸ“š Retrofit has been Handled !! || Consumable code for request API (News API)
Kotlin
9
star
20

awesome-minimum-mvvm-sample

Awesome Sample Minimum MVVM
9
star
21

minimum-mvvm-koin-room-database

MVVM With Simple Room Database
Kotlin
9
star
22

recycler-coroutines

RecyclerView Auto Add Data Using Coroutines
Kotlin
8
star
23

minimum-mvvm-koin-network-api

MVVM with simple HTTP Request Example
Kotlin
8
star
24

android-admob-app-open-ad

Research - Admob App Open
Kotlin
8
star
25

pray-box

Pray Box, Catat Shalat, Muslim Mobile Apps, Aplikasi berbasis android yang di khususkan untuk pencatatan sholat
Kotlin
7
star
26

speech-booster

Speech Booster is Learning Speech by Recording Video
Kotlin
7
star
27

easy-kotlin-lib-jar

Repository Sample For Native Kotlin Library
Kotlin
7
star
28

sticker-whatsapp

Base Stiker WhatsApp With Key Store
Java
7
star
29

remote-data-source

Remote Data Source Json
HTML
7
star
30

desktop-experimental-catalgoue

Desktop Experimental Catalogue
7
star
31

wallpaper

Wallpaper app using library frogobox/frogo-consume-api
Kotlin
7
star
32

kasir

POS (Point Of Sales) untuk Kasir Android Apps, dilengkapi dengan barcode scanner untuk memudahkan dalam menginput produk
Java
7
star
33

jitpack-library-groovy-guide

Tutorial For openJDK 11 and AGP 7.0.0+ | Tutorial Multi Library Android in 1 Project | Groovy
Kotlin
7
star
34

desktop-promadika

Program Informasi Pendataan Nikah
Java
6
star
35

nutrition-framework-desktop

Consumer desktop from nutrition-framework API
Kotlin
6
star
36

replacer-generator

Hilih Text Generator
Java
6
star
37

datamining-clustering

Data Mining about clustering
Python
6
star
38

ai-fuzzy-logic

Implement Fuzzy Logic
Java
6
star
39

profile-android

Amir's Android Profile App
Kotlin
6
star
40

2048

2048 Games
Kotlin
6
star
41

music-compressor

Music Mp3 Compressor
Python
6
star
42

kmm-compose

Experimental Jetpack Compose Library UI Multi-Platform
Kotlin
5
star
43

ml-air-bnb

πŸš€ Final Project Machine Learning Subject
Python
5
star
44

bot-autoloot-rf

πŸ€– Bot RF Online Auto Loot in Java Language
Java
5
star
45

company-profile

Template Company Profile Play Store
CSS
5
star
46

yolo-badge-pull-request

You want yolo just pull request
5
star
47

ai-genetic-algorithm

Implement Genetic Algorithm and Decision Tree
Java
5
star
48

dps-thread-message-passing-interface

Coding On The Spot Sistem Pararel Terdistribusi
Python
5
star
49

music-player

Music Player With Lyric
Kotlin
5
star
50

dps-versioning

Server dapat memberikan informasi kepada client aplikasi terkait versioning informasi update aplikasi
Python
5
star
51

plant-tree

Let's Go Green - Plant Tree
JavaScript
5
star
52

caravan-android

Learning playground about Android
Kotlin
5
star
53

desktop-compose-retrofit-rxjava

Simple Example RxJava Jetpack Compose Desktop Apps
Kotlin
5
star
54

minimum-mvvm-hilt-network-api

MVVM Sample HTTP Request Retrofit with Hilt
Kotlin
4
star
55

coach-mark

Create Coach Mark With Balloon
Kotlin
4
star
56

doolan-website

Output Kursus Onlenkan Belajar Website Pemula
HTML
4
star
57

minimum-mvvm-hilt-room-database

MVVM Sample Room Database with Hilt
Kotlin
4
star
58

website-softy-pinko

Template HTML CSS From Templatemo
CSS
4
star
59

divide-conquer-branch-bound

πŸš€ Final Project Desain Analisis Algoritma (Divide and Conquer & Branch And Bound)
Java
4
star
60

dps-interprocess-communication

Implement Simple Interprocess Communication Using Socket In Python
Python
4
star
61

website-cyborg-gaming

Template HTML CSS From Templatemo
JavaScript
4
star
62

text-to-speech

Text To Speech With Library Google Text To Speech
Python
4
star
63

misaiwan-fish-marketplace

MISAIWAN (Amir Saiful Cinta Ikan)
HTML
4
star
64

desktop-sinop

Project Sinop (Sistem Notulensi Persidangan)
Java
3
star
65

util

Util for emergency endpoint
3
star
66

caravan-java-kotlin

Learning playground about Kotlin
Kotlin
3
star
67

automata-theory-language

Final Task Auotomata Theory Language
Java
3
star
68

dps-remote-invocation

Implement Simple Remote Invocation In Python
Python
3
star
69

dps-indirect-communication

Indirect-Communication
Python
3
star
70

website-thumber

Template HTML CSS From Themeslab
HTML
3
star
71

desktop-tebak-gambar

Apps Tebak Gambar Desktop Java Games
Java
3
star
72

video-player

Video Player App Using ExoPlayer
Kotlin
3
star
73

de-knappe

Online Exams : Remedial
PHP
3
star
74

ai-transportation-services

Task 4 Artificial Intelligence
Java
3
star
75

caravan-dart

Learning playground about Dart
Dart
3
star
76

init-repository

Initialize Repository
3
star
77

minimum-mvvm-hilt

MVVM simple sample with hilt
Kotlin
3
star
78

desktop-resep-masakan

Aplikasi Desktop Resep Makanan
Java
3
star
79

deep-link-front-end

2
star
80

consumable-code-github-api

Github Api Data
Kotlin
2
star
81

spring-kotlin-new-comer

Kotlin Spring Boot New Comer
Kotlin
2
star
82

back-office-multi-repository-handling

Back Office Server / API for handling multiple repository
2
star
83

consume-private-submodule

Implement SubModule With Private Repository
2
star
84

caravan-html-css-js

Learning playground about HTML, CSS, JS
HTML
2
star
85

front-end-javascript-back-end-kotlin

Trying Combine Java Script And JS
Kotlin
2
star
86

caravan-python

Milestone learning path python programming language from newbie until expert || Complete With Tools and Guideline
Python
2
star
87

news-app

πŸš€ Simple News App focusing on UI, no need to worry about the data, because it's been handled with a library
Kotlin
2
star
88

submodule-android-library

Submodule of android-app-call-submodule-as-library
Kotlin
2
star
89

mini-search-data

Searching Data Using Filter RecyclerView
Kotlin
2
star
90

caravan-go

Milestone learning path golang from newbie until expert || Complete With Tools and Guideline
Go
2
star
91

android-studio-game-dev

Template Repository Researh Game Dev From Android Studio
Kotlin
2
star
92

android-skeleton-piece-java

Skeleton piece from repository android-skeleton
Kotlin
1
star
93

unity-project-git

Template save .gitignore unity project 2D games
1
star
94

flutter-inject-to-native

flutter-inject-to-native
Dart
1
star
95

research_flutter_module

Dart
1
star
96

json-generator

Json Generator From Kotlin
Kotlin
1
star
97

android-skeleton-cloned

Cloned Repository With Separated Linked Repository
Kotlin
1
star
98

android-skeleton

Template Repository With Separated Linked Repository
Kotlin
1
star
99

impl-automated-build

Implementation Automated Build Android With Github Action
Kotlin
1
star
100

android-app-call-submodule-as-library

App consume and fetch submodule library
Kotlin
1
star