'How to use filter.getFilter().filter(newtext) method inside fragments android
I'm using a RecyclerView inside a fragment.
Problem is that I'm not able to use adapter.getfilter().filter(newText) inside fragments.
Error ----> Non-static method 'getFilter()' cannot be referenced from a static context
See below code for reference :
Fragment code :-
@Override
public boolean onQueryTextChange(String newText) {
adapterRecVHomeFrag.getFilter().filter(newText);
return false;
}
});
Adapter Code
public class adapterRecVHomeFrag extends RecyclerView.Adapter<adapterRecVHomeFrag.myviewholder> implements Filterable {
ArrayList<dataModelRecVFragHome> dataHolder;
ArrayList<dataModelRecVFragHome> dataHolderBackup;
public adapterRecVHomeFrag(ArrayList<dataModelRecVFragHome> dataHolder) {
this.dataHolder = dataHolder;
dataHolderBackup = new ArrayList<>(dataHolder);
}
@NonNull
@Override
public myviewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new myviewholder(LayoutInflater.from(parent.getContext()).inflate(R.layout.single_row_design_rec_homef
,parent,false));
}
@Override
public void onBindViewHolder(@NonNull myviewholder holder, int position) {
holder.img.setImageResource(dataHolder.get(position).getImage());
holder.title.setText(dataHolder.get(position).getTitle());
holder.desc.setText(dataHolder.get(position).getDescription());
holder.likeImg.setImageResource(dataHolder.get(position).getLikeImg());
holder.commentImg.setImageResource(dataHolder.get(position).getCommentImg());
}
@Override
public int getItemCount() {
return dataHolder.size();
}
@Override
public Filter getFilter() {
return filter;
}
Filter filter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence keyword) {
ArrayList<dataModelRecVFragHome> filteredData = new ArrayList<>();
if(keyword.toString().isEmpty() || keyword.length() == 0){
filteredData.addAll(dataHolderBackup);
}else{
for(dataModelRecVFragHome obj : dataHolderBackup){
if(obj.getTitle().toString().toLowerCase().trim().contains(keyword
.toString().toLowerCase().trim()) ||
obj.getDescription().toString().toLowerCase().trim().contains(keyword
.toString().toLowerCase().trim()))
{
filteredData.add(obj);
}
}
}
FilterResults results = new FilterResults();
results.values=filteredData;
return results;
}
@Override
protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
dataHolderBackup.clear();
dataHolderBackup.addAll((ArrayList<dataModelRecVFragHome>)filterResults.values);
notifyDataSetChanged();
}
};
class myviewholder extends RecyclerView.ViewHolder{
ImageView img,likeImg,commentImg;
TextView title,desc;
public myviewholder(@NonNull View itemView) {
super(itemView);
img = itemView.findViewById(R.id.imageVSingleRowDesRecHomeF);
title = itemView.findViewById(R.id.titleTxtVSingleRDesRecHomeF);
desc = itemView.findViewById(R.id.descriptionTxtVSingleRDesRecHomeF);
likeImg = itemView.findViewById(R.id.likeImgVSingleRDesRecHomeF);
commentImg = itemView.findViewById(R.id.commentImgVSingleRDesRecHomeF);
likeImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(itemView.getContext(), "Liked", Toast.LENGTH_SHORT).show();
}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// Apply activity transition
commentImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(view.getContext(), "Clicked", Toast.LENGTH_SHORT).show();
Intent i = new Intent(view.getContext(),commentSc.class);
itemView.getContext().startActivity(i);
}
});
} else {
// Swap without transition
commentImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(view.getContext(), "clicked", Toast.LENGTH_SHORT).show();
Intent i = new Intent(view.getContext(),commentSc.class);
itemView.getContext().startActivity(i);
}
});
}
}//End myViewHolder
}//End classMyViewHolder
}
Solution 1:[1]
Answer
Answer ---> I forgot to create an instance of adapter class
Solution ----->
adapterRecVHomeFrag adapter;
add this line to create a variable of adapter class type.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | KHUSHAL Tiwary |
