How to search and highlight Text in Recyclerview like Whatsapp.
I have data in recyclerview from Firebase Realtime Database. I am first loading data in adapter and then listening adapter in Main activity.
I want to highlight the text in the view in recyclerview with the searched keyword from Searchbar like WhatsApp doing. I don't know how to do this. Please help me in this.
Here is my Code:
This is my DealsAdapter
public class DealsAdapter extends FirebaseRecyclerAdapter<DealsModel, DealsAdapter.ViewHolder> {
public DealsAdapter(FirebaseRecyclerOptions<DealsModel> options) {
super(options);
}
public class ViewHolder extends RecyclerView.ViewHolder {
ImageView img;
TextView tvData, tvTime;
ImageButton btnShare;
public ViewHolder(@NonNull View itemView) {
super(itemView);
img = (ImageView) itemView.findViewById(R.id.img1);
tvData = (TextView) itemView.findViewById(R.id.tvData);
tvTime = (TextView) itemView.findViewById(R.id.tvTime);
btnShare = (ImageButton) itemView.findViewById(R.id.btnShare);
}
}
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.deals_card, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position, DealsModel model) {
holder.tvData.setText(model.getData());
holder.tvData.setMovementMethod(BetterLinkMovementMethod.getInstance());
Linkify.addLinks(holder.tvData, Linkify.WEB_URLS);
long longTime = model.getTime();
String dateTime = Utility.getStringDate(longTime, "MMMM dd | hh:mm aa");
holder.tvTime.setText(dateTime);
String type = model.getType();
String imgurl = "https://......." + type + ".png";
ImageView holderImg = holder.img;
//Try to load image from cache
Picasso.get()
.load(model.getType())
.networkPolicy(NetworkPolicy.OFFLINE).placeholder(R.drawable.defaultt)
.placeholder(R.drawable.defaultt)
.error(R.drawable.defaultt)
.into(holder.img, new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError(Exception e) {
Picasso.get()
.load(imgurl)
.into(holderImg);
}
});
}
}
This is my Main Activity
public class MainActivity extends AppCompatActivity {
DealsAdapter dealsAdapter;
RecyclerView recyclerView;
static int countMsg = 0;
LinearLayout gifLayout;
CounterFab btnFloat;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recyclerview);
gifLayout = findViewById(R.id.gifLayout);
btnFloat = findViewById(R.id.btnFloat);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setStackFromEnd(true);
recyclerView.setLayoutManager(layoutManager);
Query query = FirebaseDatabase.getInstance().getReference().child("list");
FirebaseRecyclerOptions<DealsModel> options =
new FirebaseRecyclerOptions.Builder<DealsModel>()
.setQuery(query, DealsModel.class)
.build();
dealsAdapter = new DealsAdapter(options);
recyclerView.setAdapter(dealsAdapter);
}
@Override
protected void onStart() {
super.onStart();
dealsAdapter.startListening();
}
@Override
protected void onStop() {
super.onStop();
dealsAdapter.stopListening();
}
}