Искать букву “ё” с помощью TextWatcher при поиске

287
26 ноября 2016, 19:23

Здравствуйте.

Я недавно начал изучать 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();
            }
        }
    }

}`
READ ALSO
java - удаление Объекта и ссылку на него из массива [закрыто]

java - удаление Объекта и ссылку на него из массива [закрыто]

у меня есть объект и переменная ссылкой на его экземпляр нужно из самого объекта его удалить

391
Вывод данных из БД в JSP

Вывод данных из БД в JSP

Помогите кто-нибудь додуматьсяСитуация такая:

575
Объявление переменной

Объявление переменной

Всем доброго времени суток)) Объясните что здесь за магия?)

239
ListView в Android

ListView в Android

Я реализовал поиск по ListView через EditTextУ меня 3 компонента в каждом элементе списка : 2 textview и 1 imageView

264