CandyView-Library
CandyView-Library copied to clipboard
Implement any RecyclerView in your Andoird App with just 1 Line. CandyView Library handles everything for you using Reflection in Java.

The easiest way to implement RecyclerView in just 1 Line.
Delicious Facts 🍭
- Forget creation of tasteless
Adapters& monotonousfindViewByIdfor your views in adapter. - Text data
String, int, float ...is automatically set intoTextView&Button - Image URL
Stringand Image Drawable(int) R.drawable.idis automatically set intoImageView - Its all done without any extra line of code. How?
- Manage properties of all view using single
SugarListeneror just set attributes for specific views.
Download via Gradle 💻
Add it in your Project build.gradle at the end of repositories:
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
Add the dependency in your App build.gradle:
dependencies {
implementation 'com.github.ThisIsNSH:CandyView:1.3'
// add these for internal functioning
implementation 'com.squareup.picasso:picasso:{latest version}'
implementation 'com.android.support:recyclerview-v7:{build version}'
}
Get Started 🏁
1. Add the code to create CandyView:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.thisisnsh.sugarlibrary.CandyView
android:id="@+id/candy"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
class ExampleActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
...
// Initialize CandyView object
CandyView candyView = findViewById(R.id.candy);
// Create RecyclerView using make(Context content, int Layout, List<Model> Data, Model Class)
candyView.make(this, R.layout.adapter, dataList, Model.class);
}
}
2. Add SugarListener to explicitly set properties of views accessed using getViewById:
class ExampleActivity extends Activity implements CandyView.SugarListener {
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
candyView.addSugarListener(this);
}
@Override
public void onCandyMade() {
// Initialize required adapter views
textView = (TextView) candyView.getViewById(R.id.text);
}
@Override
public void onCandyRecycled(View view, int position) {
// Set attributes of adapter views for all positions
textView.setTextColor(getResources().getColor(R.color.colorPrimary));
// Set attributes of adapter views at a particular position
if (position == 1)
textView.setTextColor(getResources().getColor(R.color.colorAccent));
}
}
Automatically Set Data 🚀
3. Create Model Class with variables having same names as IDs of views in adapter view.
public class Model {
// Declare data variables
String image;
String name;
public Model(String image, String name) {
this.image = image;
this.name = name;
}
// Getter & Setter for the variables
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
This example sets the value of name String in name TextView. image String URL is set to image ImageView. R.drawable.id format is also supported for ImageView.
Make sure the variable name in Model and ID in layout.xml is same.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardBackgroundColor="#fff"
app:cardCornerRadius="16dp"
app:cardElevation="4dp"
app:cardPreventCornerOverlap="true"
app:cardUseCompatPadding="true">
<RelativeLayout
android:layout_width="match_parent"
android:id="@+id/relative"
android:layout_height="wrap_content"
android:gravity="center_vertical">
<ImageView
android:id="@+id/image"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_margin="8dp"
android:scaleType="centerCrop" />
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:layout_toRightOf="@id/image"
android:textColor="#000"
android:textSize="18sp"/>
</RelativeLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
Confused 🤷♂️? Download Sample App.
Found a bug 🐛?
- Please create an issue with appropriate tags
- We welcome developers to fix the bug and open a PR
- Keep PR name as Fixes #Issue_Number