Links & Dependenciesactivity_main.xmlMainActivity.javaExampleAdapter.javaExampleItem.javaexample_item.xml
RecyclerView & CardView Dependencies:
developer.android.com/topic/libraries/support-library/packages.html#v7-recyclerview
developer.android.com/topic/libraries/support-library/packages.html#v7-cardview
<?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" android:orientation="vertical" tools:context="com.codinginflow.searchfunctionalityexample.MainActivity"> <EditText android:id="@+id/edittext" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="16dp"/> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/darker_gray" android:padding="4dp" android:scrollbars="vertical" /> </LinearLayout>
package com.codinginflow.searchfunctionalityexample; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.text.Editable; import android.text.TextWatcher; import android.widget.EditText; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { private ArrayList<ExampleItem> mExampleList; private RecyclerView mRecyclerView; private ExampleAdapter mAdapter; private RecyclerView.LayoutManager mLayoutManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); createExampleList(); buildRecyclerView(); EditText editText = findViewById(R.id.edittext); editText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { filter(s.toString()); } }); } private void filter(String text) { ArrayList<ExampleItem> filteredList = new ArrayList<>(); for (ExampleItem item : mExampleList) { if (item.getText1().toLowerCase().contains(text.toLowerCase())) { filteredList.add(item); } } mAdapter.filterList(filteredList); } private void createExampleList() { mExampleList = new ArrayList<>(); mExampleList.add(new ExampleItem(R.drawable.ic_android, "One", "Line 2")); mExampleList.add(new ExampleItem(R.drawable.ic_audio, "Two", "Line 2")); mExampleList.add(new ExampleItem(R.drawable.ic_sun, "Three", "Line 2")); mExampleList.add(new ExampleItem(R.drawable.ic_android, "Four", "Line 2")); mExampleList.add(new ExampleItem(R.drawable.ic_audio, "Five", "Line 2")); mExampleList.add(new ExampleItem(R.drawable.ic_sun, "Six", "Line 2")); mExampleList.add(new ExampleItem(R.drawable.ic_android, "Seven", "Line 2")); mExampleList.add(new ExampleItem(R.drawable.ic_audio, "Eight", "Line 2")); mExampleList.add(new ExampleItem(R.drawable.ic_sun, "Nine", "Line 2")); } private void buildRecyclerView() { mRecyclerView = findViewById(R.id.recyclerView); mRecyclerView.setHasFixedSize(true); mLayoutManager = new LinearLayoutManager(this); mAdapter = new ExampleAdapter(mExampleList); mRecyclerView.setLayoutManager(mLayoutManager); mRecyclerView.setAdapter(mAdapter); } }
package com.codinginflow.searchfunctionalityexample; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import java.util.ArrayList; public class ExampleAdapter extends RecyclerView.Adapter<ExampleAdapter.ExampleViewHolder> { private ArrayList<ExampleItem> mExampleList; public static class ExampleViewHolder extends RecyclerView.ViewHolder { public ImageView mImageView; public TextView mTextView1; public TextView mTextView2; public ExampleViewHolder(View itemView) { super(itemView); mImageView = itemView.findViewById(R.id.imageView); mTextView1 = itemView.findViewById(R.id.textView); mTextView2 = itemView.findViewById(R.id.textView2); } } public ExampleAdapter(ArrayList<ExampleItem> exampleList) { mExampleList = exampleList; } @Override public ExampleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.example_item, parent, false); ExampleViewHolder evh = new ExampleViewHolder(v); return evh; } @Override public void onBindViewHolder(ExampleViewHolder holder, int position) { ExampleItem currentItem = mExampleList.get(position); holder.mImageView.setImageResource(currentItem.getImageResource()); holder.mTextView1.setText(currentItem.getText1()); holder.mTextView2.setText(currentItem.getText2()); } @Override public int getItemCount() { return mExampleList.size(); } public void filterList(ArrayList<ExampleItem> filteredList) { mExampleList = filteredList; notifyDataSetChanged(); } }
package com.codinginflow.searchfunctionalityexample; public class ExampleItem { private int mImageResource; private String mText1; private String mText2; public ExampleItem(int imageResource, String text1, String text2) { mImageResource = imageResource; mText1 = text1; mText2 = text2; } public int getImageResource() { return mImageResource; } public String getText1() { return mText1; } public String getText2() { return mText2; } }
<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.CardView 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:layout_marginBottom="4dp" app:cardCornerRadius="4dp"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="4dp"> <ImageView android:id="@+id/imageView" android:layout_width="50dp" android:layout_height="50dp" android:padding="2dp" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_toEndOf="@+id/imageView" android:text="Line 1" android:textColor="@android:color/black" android:textSize="20sp" android:textStyle="bold" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView" android:layout_marginStart="8dp" android:layout_toEndOf="@+id/imageView" android:text="Line 2" android:textSize="15sp" /> </RelativeLayout> </android.support.v7.widget.CardView>