Здравствуйте.
Я недавно начал изучать java.. Сейчас создаю словарь для андроид, но у меня возникла проблема с функцией поиска (этот код не мой)
searchBox.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
System.out.println("Alphabet " + s.toString());
mAdapter.getFilter().filter(s.toString());
System.out.println("Alphabet Count " + mAdapter.mValues.size());
}
@Override
public void afterTextChanged(Editable s) {
}
});
Приложение не ищет букву "ё" когда пишу "е".
Пожалуйста, помогите. Хочу чтобы приложение не так строго искало слова.
Вот весь код
public class ItemListActivity extends AppCompatActivity {
/**
* Whether or not the activity is in two-pane mode, i.e. running on a tablet
* device.
*/
private boolean mTwoPane;
// List of all dictionary words
private List<QuizObject> dictionaryWords;
private List<QuizObject> filteredList;
// RecycleView adapter object
private SimpleItemRecyclerViewAdapter mAdapter;
// Search edit box
private EditText searchBox;
// Database object
private DbBackend dbBackend;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_item_list);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
toolbar.setTitle(getTitle());
// Google Analytic tracking code.
Tracker t = ((AnalyticsApplication) getApplication()).getTracker(AnalyticsApplication.TrackerName.APP_TRACKER);
t.setScreenName(this.getClass().getSimpleName());
t.send(new HitBuilders.ScreenViewBuilder().build());
// Instantiate database object and call return dictionary method
dbBackend = new DbBackend(ItemListActivity.this);
dictionaryWords = dbBackend.dictionaryWords();
filteredList = new ArrayList<QuizObject>();
filteredList.addAll(dictionaryWords);
searchBox = (EditText)findViewById(R.id.search_box);
RecyclerView recyclerView = (RecyclerView)findViewById(R.id.item_list);
recyclerView.addItemDecoration(new SimpleDividerItemDecoration(this));
assert recyclerView != null;
mAdapter = new SimpleItemRecyclerViewAdapter(filteredList);
recyclerView.setAdapter(mAdapter);
// search suggestions using the edittext widget
searchBox.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
System.out.println("Alphabet " + s.toString());
mAdapter.getFilter().filter(s.toString());
System.out.println("Alphabet Count " + mAdapter.mValues.size());
}
@Override
public void afterTextChanged(Editable s) {
}
});
if (findViewById(R.id.item_detail_container) != null) {
// The detail container view will be present only in the
// large-screen layouts (res/values-w900dp).
// If this view is present, then the
// activity should be in two-pane mode.
mTwoPane = true;
}
}
// create a custom RecycleViewAdapter class
public class SimpleItemRecyclerViewAdapter extends RecyclerView.Adapter<SimpleItemRecyclerViewAdapter.ViewHolder> implements Filterable {
private List<QuizObject> mValues;
private CustomFilter mFilter;
public SimpleItemRecyclerViewAdapter(List<QuizObject> items) {
mValues = items;
mFilter = new CustomFilter(SimpleItemRecyclerViewAdapter.this);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list_content, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
holder.mItem = mValues.get(position);
holder.mIdView.setText(String.valueOf(mValues.get(position).getId()));
holder.mIdView.setVisibility(View.GONE);
holder.mContentView.setText(mValues.get(position).getWord());
final String valueOfId = String.valueOf(holder.mItem.getId());
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mTwoPane) {
Bundle arguments = new Bundle();
arguments.putString(ItemDetailFragment.ARG_ITEM_ID, valueOfId);
ItemDetailFragment fragment = new ItemDetailFragment();
fragment.setArguments(arguments);
getSupportFragmentManager().beginTransaction().replace(R.id.item_detail_container, fragment).commit();
} else {
Context context = v.getContext();
Intent intent = new Intent(context, ItemDetailActivity.class);
intent.putExtra(ItemDetailFragment.ARG_ITEM_ID, valueOfId);
context.startActivity(intent);
}
}
});
}
@Override
public int getItemCount() {
return mValues.size();
}
@Override
public Filter getFilter() {
return mFilter;
}
public class ViewHolder extends RecyclerView.ViewHolder {
public final View mView;
public final TextView mIdView;
public final TextView mContentView;
public QuizObject mItem;
public ViewHolder(View view) {
super(view);
mView = view;
mIdView = (TextView) view.findViewById(R.id.id);
mContentView = (TextView) view.findViewById(R.id.content);
}
@Override
public String toString() {
return super.toString() + " '" + mContentView.getText() + "'";
}
}
public class CustomFilter extends Filter {
private SimpleItemRecyclerViewAdapter mAdapter;
private CustomFilter(SimpleItemRecyclerViewAdapter mAdapter) {
super();
this.mAdapter = mAdapter;
}
@Override
protected FilterResults performFiltering(CharSequence constraint) {
filteredList.clear();
final FilterResults results = new FilterResults();
if (constraint.length() == 0) {
filteredList.addAll(dictionaryWords);
} else {
final String filterPattern = constraint.toString().toLowerCase().trim();
for (final QuizObject mWords : dictionaryWords) {
if (mWords.getWord().toLowerCase().startsWith(filterPattern)) {
filteredList.add(mWords);
}
}
}
System.out.println("Count Number " + filteredList.size());
results.values = filteredList;
results.count = filteredList.size();
return results;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
/*filteredList.clear();
filteredList.addAll((List<QuizObject>) results.values);*/
System.out.println("Count Number 2 " + ((List<QuizObject>) results.values).size());
this.mAdapter.notifyDataSetChanged();
}
}
}
}`
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
у меня есть объект и переменная ссылкой на его экземпляр нужно из самого объекта его удалить
Я реализовал поиск по ListView через EditTextУ меня 3 компонента в каждом элементе списка : 2 textview и 1 imageView