Java 我有一个充当搜索栏的editText,如果用户没有';我没有在搜索栏上键入任何内容
我希望项目仅在用户开始在EditText上键入内容时显示 这是我的适配器:Java 我有一个充当搜索栏的editText,如果用户没有';我没有在搜索栏上键入任何内容,java,android,android-recyclerview,android-adapter,Java,Android,Android Recyclerview,Android Adapter,我希望项目仅在用户开始在EditText上键入内容时显示 这是我的适配器: userList = new ArrayList<>(); userAdapter = new UserSearchMessageAdapter(getContext(), userList, true); recyclerView.setAdapter(userAdapter); readUsers(); search_bar.
userList = new ArrayList<>();
userAdapter = new UserSearchMessageAdapter(getContext(), userList, true);
recyclerView.setAdapter(userAdapter);
readUsers();
search_bar.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) {
searchUsers(charSequence.toString().toLowerCase());
}
@Override
public void afterTextChanged(Editable editable) {
}
});
return view;
}
private void searchUsers(String s){
Query query = FirebaseDatabase.getInstance().getReference("Users").orderByChild("username")
.startAt(s)
.endAt(s+"\uf8ff");
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
userList.clear();
for (DataSnapshot snapshot : dataSnapshot.getChildren()){
User user = snapshot.getValue(User.class);
userList.add(user);
}
userAdapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
private void readUsers() {
final FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Users");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (search_bar.getText().toString().equals("")) {
userList.clear();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
User user = snapshot.getValue(User.class);
userList.add(user);
}
userAdapter.notifyDataSetChanged();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
@NonNull
@凌驾
public UserAdapter.ImageViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
视图=LayoutFlater.from(mContext).充气(R.layout.user\u项,父项,false);
返回新的UserAdapter.ImageViewHolder(视图);
}
@凌驾
public void onBindViewHolder(@NonNull final UserAdapter.ImageViewHolder,final int位置){
...
}
以下是搜索片段:
userList = new ArrayList<>();
userAdapter = new UserSearchMessageAdapter(getContext(), userList, true);
recyclerView.setAdapter(userAdapter);
readUsers();
search_bar.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) {
searchUsers(charSequence.toString().toLowerCase());
}
@Override
public void afterTextChanged(Editable editable) {
}
});
return view;
}
private void searchUsers(String s){
Query query = FirebaseDatabase.getInstance().getReference("Users").orderByChild("username")
.startAt(s)
.endAt(s+"\uf8ff");
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
userList.clear();
for (DataSnapshot snapshot : dataSnapshot.getChildren()){
User user = snapshot.getValue(User.class);
userList.add(user);
}
userAdapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
private void readUsers() {
final FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Users");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (search_bar.getText().toString().equals("")) {
userList.clear();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
User user = snapshot.getValue(User.class);
userList.add(user);
}
userAdapter.notifyDataSetChanged();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
userList=newarraylist();
userAdapter=newuserSearchMessageAdapter(getContext(),userList,true);
recyclerView.setAdapter(userAdapter);
readUsers();
search_bar.addTextChangedListener(新的TextWatcher(){
@凌驾
更改前的公共无效(CharSequence CharSequence,int i,int i1,int i2){
}
@凌驾
public void onTextChanged(CharSequence CharSequence,int i,int i1,int i2){
searchUsers(charSequence.toString().toLowerCase());
}
@凌驾
public void PostTextChanged(可编辑){
}
});
返回视图;
}
私有void searchUsers(字符串s){
Query Query=FirebaseDatabase.getInstance().getReference(“用户”).orderByChild(“用户名”)
.startAt(s)
.endAt(s+“\uf8ff”);
addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
userList.clear();
对于(DataSnapshot快照:DataSnapshot.getChildren()){
User=snapshot.getValue(User.class);
添加(用户);
}
userAdapter.notifyDataSetChanged();
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
}
私有void readUsers(){
final FirebaseUser FirebaseUser=FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference=FirebaseDatabase.getInstance().getReference(“用户”);
addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
if(search_bar.getText().toString().equals(“”){
userList.clear();
对于(DataSnapshot快照:DataSnapshot.getChildren()){
User=snapshot.getValue(User.class);
添加(用户);
}
userAdapter.notifyDataSetChanged();
}
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
}
编辑当用户未在edittext中键入任何内容时,可以隐藏recyclerview
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if(charSeqeunce.equals(""))recyclerView.setVisibility(View.GONE);
else {searchUsers(charSequence.toString().toLowerCase());
recyclerView.setVisibility(View.VISIBLE);
}
}
您可以只显示一个空的状态图像。
当用户在edittext中键入某些内容时,您可以向他们显示recyclerview并隐藏空状态图像!
希望这有帮助 @Yuza对不起,您必须添加“recyclerView.setVisibility(View.GONE);”我将编辑我的答案。我已将其设置为GONE,但仍然会显示项目