У меня есть arraylist, так как я добавил фильтруемый в мой arraylist.когда я ищу последовательно, это дает правильный результат.скажем, моя строка String demo = "Я разработчик Android"
Когда я ищу, я android, он дает точный результат, но если я искал
"разработчик Android", он не дает мне правильный результатПомогите мне, пожалуйста.Мой адаптер для поиска
import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.sonal.mindwerx.Functions.Functions;
import com.sonal.mindwerx.Item.SearchModel;
import com.sonal.mindwerx.R;
import com.sonal.mindwerx.SearchDisplay;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
public class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.MyViewHolder> implements Filterable {
ArrayList<SearchModel> filterList;
private List<SearchModel> searchlist;
private Context context;
String mSearchText = "";
public class MyViewHolder extends RecyclerView.ViewHolder {
public TextView tv_name_search, tv_code_search;
public LinearLayout ll_search_item;
public MyViewHolder(View view) {
super(view);
tv_name_search = (TextView) view.findViewById(R.id.tv_name_search);
tv_code_search = (TextView) view.findViewById(R.id.tv_code_search);
ll_search_item = (LinearLayout) view.findViewById(R.id.ll_search_item);
}
}
public SearchAdapter(Context context, ArrayList<SearchModel> searchlist) {
this.context = context;
this.searchlist = searchlist;
this.filterList = searchlist;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.search_item, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {
final SearchModel searchModel = searchlist.get(position);
holder.tv_name_search.setText(searchModel.getName());
holder.tv_code_search.setText(searchModel.getCode());
holder.ll_search_item.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, SearchDisplay.class);
intent.putExtra("sonalcode", searchModel.getCode());
String rate = searchModel.getRate();
intent.putExtra("rate", searchModel.getRate());
intent.putExtra("productid", searchModel.getProductid());
intent.putExtra("brandid", searchModel.getBrandid());
context.startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return searchlist.size();
}
CustomFilter filter;
@Override
public Filter getFilter() {
if (filter == null) {
filter = new CustomFilter();
}
return filter;
}
class CustomFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
// TODO Auto-generated method stub
FilterResults results = new FilterResults();
if (constraint != null && constraint.length() > 0) {
//CONSTARINT TO UPPER
constraint = constraint.toString().toLowerCase();
ArrayList<SearchModel> filters = new ArrayList<SearchModel>();
String[] separated = constraint.toString().toLowerCase().split(" ");
//get specific items
for (int i = 0; i < filterList.size(); i++) {
for (int j = 0; j < separated.length; j++) {
if (filterList.get(i).getName().toLowerCase().contains(separated[j]) || filterList.get(i).getCode().toLowerCase().contains(separated[j])) {
SearchModel p = new SearchModel(filterList.get(i).getBrandid(), filterList.get(i).getProductid(), filterList.get(i).getRate(), filterList.get(i).getImage(), filterList.get(i).getName(), filterList.get(i).getCode());
filters.add(p);
break;
}
}
}
results.count = filters.size();
results.values = filters;
} else {
results.count = filterList.size();
results.values = filterList;
}
return results;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
// TODO Auto-generated method stub
searchlist = (ArrayList<SearchModel>) results.values;
notifyDataSetChanged();
}
}
}