Как добавить поисковый фильтр в RecyclerView из firebase [дубликата]

В браузере вы можете:

a) игнорировать правый щелчок и позволить самому браузеру обрабатывать его (что обычно означает, что будет показано контекстное меню)

XOR

b) отредактируйте правый клик самостоятельно, а это означает, что браузер не будет показывать свое контекстное меню.

Вы не можете иметь как a), так и b), они взаимно эксклюзив. Если вам нужно контекстное меню правой кнопки мыши на веб-странице, вам нужно подделать его самостоятельно - например, см. этот учебник и результат .

1
задан Deep Patel 18 January 2019 в 05:52
поделиться

1 ответ

Надеюсь, это поможет:

public class SearchPlaceAdapter extends RecyclerView.Adapter<SearchPlaceAdapter.SearchPlaceAdapterViewHolder> implements Filterable {

    Context mCntx;
    public ArrayList<Place> arrayList;
    public ArrayList<Place> arrayListFiltered;

    public SearchPlaceAdapter(Context mCntx, ArrayList<Place> arrayList)
    {
        this.mCntx = mCntx;
        this.arrayList = arrayList;
        this.arrayListFiltered = new ArrayList<>(arrayList);
    }

    @Override
    public int getItemCount()
    {
        return arrayList.size();
    }

    public long getItemId(int position)
    {
        return position;
    }

    @Override
    public SearchPlaceAdapterViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
    {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.search_layout, parent, false);

        SearchPlaceAdapterViewHolder viewHolder = new SearchPlaceAdapterViewHolder(view);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(SearchPlaceAdapterViewHolder holder, final int position)
    {
        final Place place = arrayList.get(position);

        holder.txtPlace.setText(arrayList.get(position).getBuilding());

        Picasso.with(mCntx).load(place.getPlaceImg()).into(holder.image);//using picasso to load image

        holder.cardPlace.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view) {

                Intent intent = new Intent(mCntx, CardviewSearch.class);
                intent.putExtra("placeId", String.valueOf(place.getPlaceId()));
                intent.putExtra("building", String.valueOf(place.getBuilding()));
                intent.putExtra("street", String.valueOf(place.getStreet()));
                intent.putExtra("imgurl", String.valueOf(place.getPlaceImg()));
                mCntx.startActivity(intent);

            }
        });
    }


    public class SearchPlaceAdapterViewHolder extends RecyclerView.ViewHolder
    {
        TextView txtPlace;
        ImageView image;
        CardView cardPlace;

        public SearchPlaceAdapterViewHolder(View itemView) {
            super(itemView);
            txtPlace = (TextView) itemView.findViewById(R.id.txtPlace);
            image = (ImageView) itemView.findViewById(R.id.image);
            cardPlace = (CardView) itemView.findViewById(R.id.cardPlace);
        }
    }

    public Filter getFilter()
    {
        return exampleFilter;
    }

    private Filter exampleFilter = new Filter() {
        @Override
        protected FilterResults performFiltering(CharSequence constraint) {
            List<Place> filteredList = new ArrayList<>();

            if (constraint == null || constraint.length() == 0) {
                filteredList.addAll(arrayListFiltered);
            } else {
                String filterPattern = constraint.toString().toLowerCase().trim();

                for (Place item : arrayListFiltered) {
                    if (item.getBuilding().toLowerCase().contains(filterPattern)) {
                        filteredList.add(item);
                    }
                }
            }

            FilterResults results = new FilterResults();
            results.values = filteredList;

            return results;
        }

        @Override
        protected void publishResults(CharSequence charSequence, FilterResults results) {
            arrayList.clear();
            arrayList.addAll((List)results.values);
            notifyDataSetChanged();
        }
    };
}
0
ответ дан John Le 18 January 2019 в 05:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: