Description
It`s a simple Mvp implemetation. Each developer can add it in him project and use it. For attach presenter to Activity or Fragment, you need write only one row! This library also support mvp pattern in recycleView. More details about you find on GitHub`s page.
Froggy alternatives and similar packages
Based on the "App" category.
Alternatively, view Froggy alternatives based on common mentions on social networks and blogs.
-
InstaMaterial
Implementation of Instagram with Material Design (originally based on Emmanuel Pacamalan's concept) -
uhabits
Loop Habit Tracker, a mobile app for creating and maintaining long-term positive habits -
FlyRefresh
The implementation of https://dribbble.com/shots/2067564-Replace -
Lightning Browser
A lightweight Android browser with modern navigation -
Twidere-Android
Twidere is a powerful twitter client for Android 1.6+ 1 , which gives you a full Holo experience and nearly full Twitter's feature. -
jianshi
A Full-Stack mobile app, including Android & Server, Simple-Poem 简诗. You can write poem in graceful & traditional Chinese style. -
Foodium 🍲
🍲Foodium is a sample food blog Android application 📱 built to demonstrate the use of Modern Android development tools - (Kotlin, Coroutines, Flow, Dagger 2/Hilt, Architecture Components, MVVM, Room, Retrofit, Moshi, Material Components). -
2048-android
The android port of the 2048 game (for offline playing) -
Bandhook-Kotlin
A showcase music app for Android entirely written using Kotlin language -
Bourbon
An MVP Dribbble client for Android Mobile, Tablet, Wear and TV. -
News-Android-App
📱:newspaper: Android client for the Nextcloud news/feed reader app -
Endoscope
Endoscope lets you to stream live video between android devices over Wi-Fi! 📱📲 -
clean-status-bar
Tidy up your Android status bar before taking screenshots for the Play Store -
Leisure
Leisure is an Android App containing Zhihu Daily,Guokr Scientific,XinhuaNet News and Douban Books -
WaniKani-for-Android
An Android client application for the awesome kanji learning website wanikani.com -
AppIconNameChanger
Library to change Android launcher App Icon and App Name programmatically ! -
LeeCo
LeeCo is an awesome app for (including unlock) problems, solutions, discuss(from leetcode) and comments. -
OpenFlappyBird
An open source clone of a famous flappy bird game for Android using AndEngine -
FoldingNavigationDrawer-Android
This is a sample project present how to use Folding-Android to add Folding Efect to Navigation Drawer. -
TurtlePlayer
A Free, Fully Fledged, Open-Source Music Player for Android -
MaterialDesignColorPalette
This is a dev tool to visualize the colours of Material design defined on -
GradientDrawableTuner
🕹️ See how the properties of Android's "shape" affect the Drawable's appearance, intuitively. -
freegemas-gdx
Freegemas libGDX is an Android and Java desktop port of Freegemas, which in turn is an open source version of the well known Bejeweled. -
vanilla
Vanilla Music Player for Android (abandoned). Visit https://github.com/vanilla-music/vanilla for an actively developed fork -
PopularMovies
:movie_camera: Movie discovery app showcasing Android best practices with Google's recommended architecture: MVVM + Repository + Offline support + Android Architecture Components + Paging library & Retrofit2. -
Android-Jigsaw-Puzzle
Android app that allows you to draw anything and turn it into a jigsaw puzzle. -
Downloader Demo using RxJava
Demo of Downloading Songs/Images through Android Download Manager using RxJava2
Appwrite - The Open Source Firebase alternative introduces iOS support
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Froggy or a related project?
README
Froggy
Simple Mvp Implementation
Download
Gragle:
compile 'ru.bullyboo.mvp:froggy:1.0.2'
Maven:
<dependency>
<groupId>ru.bullyboo.mvp</groupId>
<artifactId>froggy</artifactId>
<version>1.0.2</version>
<type>pom</type>
</dependency>
Samples
Apk of Demo version
Usage
To create presenter, you need to inherit from class FrogPresenter and parametrized its with Model and View.
public class ExamplePresenter extends FrogPresenter<ExampleModel, ExampleActivity> {
//...
}
Each presenter has a life cycle. It contains next methods:
/**
* Calling when view and model was set
*/
@Override
protected void onUpdateView(ExampleModel model, ExampleView view) {
}
/**
* Calling when new presenter was create
*/
@Override
protected void onCreatePresenter(){
}
/**
* Calling when view attached
*/
@Override
protected void onAttachedViewFirstTime(ExampleView view){
}
/**
* Calling when view attached
*/
@Override
protected void onAttachedModelFirstTime(ExampleModel model){
}
/**
* Calling when view attached
*/
@Override
protected void onAttachedView(ExampleView view){
}
/**
* Calling when model attached
*/
@Override
protected void onAttachedModel(ExampleModel model){
}
/**
* Calling when view detach
*/
@Override
protected void onDetachView(ExampleView view){
}
/**
* Calling when model detach
*/
@Override
protected void onDetachModel(ExampleModel model){
}
To attach presenter to your Activity, you need to inherit from class FrogActivity or FrogAppCompatActivity.
public class MainActivity extends FrogActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setPresenter(ExamplePresenter.class);
//...
}
//...
}
To get the object of the presenter and access to its methods, you need to use next method in your View:
//...
(ExamplePresenter) getPresenter();
//...
But, if you don't want to use converting, you can parametrize inheritable class with your presenter:
public class MainActivity extends FrogActivity<ExamplePresenter> {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setPresenter(ExamplePresenter.class);
//...
}
//...
}
In this case getting object of presenter will look like:
//...
getPresenter();
//...
It's absolutely the same with fragments:
public class TextFragment extends FrogFragment {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setPresenter(ExamplePresenter.class);
//...
}
}
Getting object of the presenter:
//...
(ExamplePresenter) getPresenter();
//...
Parametrized class:
public class TextFragment extends FrogFragment<ExamplePresenter> {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setPresenter(ExamplePresenter.class);
//...
}
}
Getting object of the presenter:
//...
getPresenter();
//...
Calling of method setPresenter
can be done in other places, but you need to do it after calling super.onCreate(savedInstanceState);
and before calling onResume();
.
Usage with RecyclerAdapter
First at all you need to create adapter, which will inherit from FrogRecyclerAdapter parametrized with Model, View and Presenter.
public class RecyclerAdapter extends FrogRecyclerAdapter<ExampleModel, ExampleViewHolder, ExamplePresenter> {
//...
}
In the adapter you need to override three methods. The method of presenter creation. The method of ViewHolder creation. The method to getting model's id.
Also you need to create your own ViewHolder, which will inherit from FrogRecyclerHolder paramtrized with Presenter.
public class ExampleHolder extends FrogRecyclerHolder<ExamplePresenter>{
//...
}
Your adapter is ready. To create and fill it with your data, use:
ExampleAdapter adapter = new ExampleAdapter();
adapter.addAll(modelList);
Thanks to
License
Copyright (C) 2017 BullyBoo
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*Note that all licence references and agreements mentioned in the Froggy README section above
are relevant to that project's source code only.