i m implementing search functionality with realmData i got printed searched string but the searched string not getting set to recyclerview.
realm serchfilter return complete result and print it but return mFilteredList not getting set to recyclerview
package "";
public class FollowAdapter extends RecyclerView.Adapter<FollowAdapter.Holder> implements Filterable {
private Context context;
ActionListener actionListener;
InviteListener inviteListener;
private String TAG = getClass().getName();
List<ContactClass> realmList;
private List<ContactClass> mFilteredList;
public FollowAdapter(Context context, List<ContactClass> realmList) {
this.context = context;
this.realmList = realmList;
mFilteredList = realmList;
}
public InviteListener getInviteListener() {
return inviteListener;
}
public void setInviteListener(InviteListener inviteListener) {
this.inviteListener = inviteListener;
}
public ActionListener getActionListener() {
return actionListener;
}
public void setActionListener(ActionListener actionListener) {
this.actionListener = actionListener;
}
@Override
public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
return new Holder(LayoutInflater.from(parent.getContext()).inflate(R.layout.follow_item, parent, false));
}
@Override
public void onBindViewHolder(final Holder holder, final int position) {
final ContactClass contactClass = realmList.get(position);
holder.contactName.setText(contactClass.getName());
Drawable drawable = ResourcesCompat.getDrawable(holder.itemView.getContext().getResources(), R.drawable.camera, null);
Glide.with(holder.itemView.getContext()).load(contactClass.getAvatar()).into(holder.contact_pic).onLoadFailed(drawable);
holder.contactNumber.setText(contactClass.getNumber());
}
}
@Override
public int getItemCount() {
return realmList.size();
}
@Override
public Filter getFilter() {
return new Filter() {
@Override
protected FilterResults performFiltering(CharSequence charSequence) {
String charString = charSequence.toString();
if (charString.isEmpty()) {
mFilteredList = realmList;
} else {
List<ContactClass> filteredList = new ArrayList<>();
Realm realm = Realm.getDefaultInstance();
RealmQuery<ContactClass> query = realm.where(ContactClass.class).contains("name", charString, Case.INSENSITIVE);
RealmResults<ContactClass> realmResults = query.findAll();
for (ContactClass c : realmResults) {
filteredList.add(c);
Log.e("filter", c.getName() + " " + c.getNumber() + " " + c.getId());
}
mFilteredList = filteredList;
}
FilterResults filterResults = new FilterResults();
filterResults.values = mFilteredList;
return filterResults;
}
@Override
protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
if (mFilteredList != null) {
Log.e("sized", mFilteredList.size() + "");
}
mFilteredList = (List<ContactClass>) filterResults.values;
notifyDataSetChanged();
}
};
}
public class Holder extends RecyclerView.ViewHolder {
ImageView contact_pic;
TextView contactName, contactNumber;
AppCompatButton follow;
public Holder(View itemView) {
super(itemView);
contact_pic = itemView.findViewById(R.id.contact_pic);
contactName = itemView.findViewById(R.id.contact_name);
contactNumber = itemView.findViewById(R.id.contact_number);
follow = itemView.findViewById(R.id.btn_follow);
contactName.setSelected(true);
contactNumber.setSelected(true);
}
}}
code to search query
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
followAdapter.getFilter().filter(newText);
return false;
}