Я новичок в этом и прошел много уроков.Коды скопированы в основном из источников.У меня есть данные ListView из базы данных Firebase Realtime, и я попытался использовать SearchView для фильтрации данных.Однако, когда я пытался что-то напечатать, мои данные ListView не смогли ничего показать.Я могу просмотреть все данные снова, когда SearchView пуст.Там не отображаются ошибки.Я что-то упустил?
MainActivity.java
SearchView searchEmail;
ListView listViewUsers;
//a list to store all the user from firebase database
ArrayList<User> users;
//our database reference object
DatabaseReference databaseUsers;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_manage_shoppers);
//getting the reference of artists node
databaseUsers = FirebaseDatabase.getInstance().getReference("Users");
//getting views
searchEmail = (SearchView) findViewById(R.id.searchEmail);
listViewUsers = (ListView) findViewById(R.id.listViewUsers);
//list to store users
users = new ArrayList<>();
//creating adapter
final UserList adapter = new UserList(ManageShoppers.this, users);
//attaching adapter to the listview
//listViewUsers.setAdapter(userAdapter);
//final ArrayAdapter adapter = new ArrayAdapter<String>(ManageShoppers.this, R.layout.layout_user_list, users);
listViewUsers.setAdapter(adapter);
databaseUsers.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//clearing the previous user list
users.clear();
//iterating through all the nodes
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
//getting artist
User user = postSnapshot.getValue(User.class);
//adding artist to the list
users.add(user);
}
adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
searchEmail.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}
@Override
public boolean onQueryTextChange(String s) {
adapter.getFilter().filter(s);
return true;
}
});
UserList.java
public class UserList extends ArrayAdapter<User> {
private Activity context;
List<User> users;
public UserList(Activity context, List<User> users) {
super(context, R.layout.layout_user_list, users);
this.context = context;
this.users = users;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View listViewItem = inflater.inflate(R.layout.layout_user_list, null, true);
TextView textEmail = (TextView) listViewItem.findViewById(R.id.textEmail);
User user = users.get(position);
textEmail.setText(user.getUserEmail());
return listViewItem;
}
}
User.java
public class User {
public String email;
public String password;
public User() {
}
public User(String email, String password) {
this.email = email;
this.password = password;
}
public String getUserEmail() {
return email;
}
public String getUserPassword() {
return password;
}
}