Я пытаюсь использовать функцию 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;
}
}