TextWatcher, кажется, не игнорировать пробелы - PullRequest
0 голосов
/ 05 января 2020

Я пытаюсь использовать функцию TextWatcher () для фильтрации списка, динамически обновляемого из базы данных Firebase. Это работает правильно. Проблема возникает, когда вводится пробел, фильтрация останавливается и все содержимое listView исчезает. Так что я представляю, что TextWatcher не распознает здесь мой код:

public class Tab1 extends Fragment {
    ListView listView;
    FirebaseDatabase database;
    DatabaseReference reference;
    ArrayList<String> list;
    ArrayAdapter<String> adapter;


    public Tab1() {
    }
    private ProgressBar spinner;
    private TextView myTextView;
    private AdView mAdView;
    ImageButton imageButton;
    EditText edittext;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        final View view = inflater.inflate(R.layout.fragment_tab1, container, false);
        coduri_cpv = new coduri_cpv();
        listView = (ListView) view.findViewById(R.id.listView);
        final TextView myTextView = view.findViewById(R.id.textView18);
        spinner = view.findViewById(R.id.progressBar);

        final EditText theFilter = (EditText) view.findViewById(R.id.searchFilter);
            spinner.setVisibility(View.VISIBLE);
            myTextView.setVisibility(TextView.VISIBLE);
            database = FirebaseDatabase.getInstance();
            reference = database.getReference("coduri_cpv");
            list = new ArrayList<>();
            adapter = new ArrayAdapter<>(getActivity(), R.layout.user_info, R.id.userInfo, list);
            reference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    for (DataSnapshot ds : dataSnapshot.getChildren()) {
                        coduri_cpv = ds.getValue(coduri_cpv.class);
                        list.add(codes.getCOD() + "     " + coduri_cpv.getEx());
                        listView.setAdapter(adapter);

                    theFilter.addTextChangedListener(new TextWatcher() {
                        @Override
                        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                        }

                        @Override
                        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                            (Tab1.this).adapter.getFilter().filter(charSequence);
                        }

                        @Override
                        public void afterTextChanged(Editable editable) {

                        }
                    });
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                }

            });

        // Inflate the layout for this fragment
        return view;
    }

}
...