Hi Guys, Maybe you all are expert in terms of using RecyclerView in android. This blog is simple example for using filter option with RecyclerView adapter. As for now you will instantiate RecyclerView and set the adapter to RecyclerView as following way. RecyclerView list = (RecyclerView) findViewById(R.id.list); list.setLayoutManager(new LinearLayoutManager(this)); list.setHasFixedSize(true); ArrayList<Number> numbers = new ArrayList<>(); String ONEs[] = {"ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE", "TEN"}; String TENs[] = {"ZERO", "TEN", "TWENTY", "THIRTY", "FOURTY", "FIFTY", "SIXTY", "SEVENTY", "EIGHTY", "NINETY", "HUNDRED"}; String HUNDREDS[] = {"ZERO", "HUNDRED", "TWO HUND
RecyclerView makes it easy to efficiently display large sets of data. You supply the data and define how each item looks, and the RecyclerView library dynamically creates the elements when they're needed.
As the name implies, RecyclerView recycles those individual elements. When an item scrolls off the screen, RecyclerView doesn't destroy its view. Instead, RecyclerView reuses the view for new items that have scrolled onscreen. This reuse vastly improves performance, improving your app's responsiveness and reducing power consumption.
Now RecyclerView is part of Android Jetpack
Example:
MainActivity.java
RecyclerViewAdapter.java
And your
fragment_main.xml
Use following dependancy
I hope this post is useful. kindly share your feedback as comment here.
Thank You
As the name implies, RecyclerView recycles those individual elements. When an item scrolls off the screen, RecyclerView doesn't destroy its view. Instead, RecyclerView reuses the view for new items that have scrolled onscreen. This reuse vastly improves performance, improving your app's responsiveness and reducing power consumption.
Now RecyclerView is part of Android Jetpack
Example:
MainActivity.java
import android.support.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.fragment.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction() .add(R.id.container, new PlaceholderFragment()) .commit(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } /** * A placeholder fragment containing a simple view. */ public static class PlaceholderFragment extends Fragment { RecyclerViewAdapter adapter; RecyclerView recyclerView; private static List<Model> demoData; public PlaceholderFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_main, container, false); } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); recyclerView = (RecyclerView) getView().findViewById(R.id.myList); recyclerView.setHasFixedSize(true); LinearLayoutManager llm = new LinearLayoutManager(getActivity()); llm.setOrientation(LinearLayoutManager.VERTICAL); recyclerView.setLayoutManager(llm); demoData = new ArrayList<Model>(); char c = 'A'; for (byte i = 0; i < 20; i++) { Model model = new Model(); model.name = c++; model.age = (byte) (20 + i); demoData.add(model); } adapter = new RecyclerViewAdapter(demoData); recyclerView.setAdapter(adapter); } } }
RecyclerViewAdapter.java
import androidx.recyclerview.widget.RecyclerView; import android.util.SparseBooleanArray; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import java.util.List; public class RecyclerViewAdapter extends RecyclerView.Adapter <RecyclerViewAdapter.ListItemViewHolder> { private List<Model> items; private SparseBooleanArray selectedItems; RecyclerViewAdapter(List<Model> modelData) { if (modelData == null) { throw new IllegalArgumentException("modelData must not be null"); } items = modelData; selectedItems = new SparseBooleanArray(); } @Override public ListItemViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { View itemView = LayoutInflater. from(viewGroup.getContext()). inflate(R.layout.item_demo_01, viewGroup, false); return new ListItemViewHolder(itemView); } @Override public void onBindViewHolder(ListItemViewHolder viewHolder, int position) { Model model = items.get(position); viewHolder.name.setText(String.valueOf(model.name)); viewHolder.age.setText(String.valueOf(model.age)); viewHolder.itemView.setActivated(selectedItems.get(position, false)); } @Override public int getItemCount() { return items.size(); } public final static class ListItemViewHolder extends RecyclerView.ViewHolder { TextView name; TextView age; public ListItemViewHolder(View itemView) { super(itemView); name = (TextView) itemView.findViewById(R.id.txt_name); age = (TextView) itemView.findViewById(R.id.txt_age); } } }
And your
fragment_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MyActivity"> <androidx.recyclerview.widget.RecyclerView android:id="@+id/myList" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout>
Use following dependancy
implementation 'androidx.recyclerview:recyclerview:1.1.0'Screen shot of this example
I hope this post is useful. kindly share your feedback as comment here.
Simple RecyclerView example with filter option in Android
Simple recyclerview example with checkbox in Android
Dynamically change ListView to GridView and Vice Versa using RecyclerView
Source code on GitHub
Thank You
Nice one. But this post is really for beginners. Tutorial with images I like that a lot. check it out. https://androidride.com/recyclerview-android-simple-tutorial-adapter-differences-listview-checkbox-example/
ReplyDelete