0

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;
}
EpicPandaForce
  • 79,669
  • 27
  • 256
  • 428
  • 1
    Possible duplicate of [How to filter the data in realm adapter?](https://stackoverflow.com/questions/44601880/how-to-filter-the-data-in-realm-adapter) – EpicPandaForce Jun 21 '17 at 07:32
  • @EpicPandaForce thanks for link fixed it –  Jun 21 '17 at 11:05

0 Answers0