Ich arbeite an der Möglichkeit per Suche Nutzer anzeigen zu lassen, vergleichbar wie bei allen sozialen Plattformen.
Aber es zeigt mir einfach alle Nutzer an. Egal, welcher Buchstabe, alle Nutzer werden angezeigt und ich verstehe nicht wieso, weshalb.
Ich möchte lediglich, dass Nutzer eingeblendet werden sollen, die genau die, i.d. Suche, eingetippten Buchstaben enthält.
Leider ist das von mir genutzte Tutorial etwas veraltet und Android Studio erhielt Updates, weshalb der Code nicht mehr funktioniert. Ob mir eventuell genau ein ähnliches Codeteil, wie dieser fehlt, weshalb es nicht so funktioniert, wie ich will?
Query searchFriendsQuery = allUsersDatabaseRef.orderByChild("username")
.startAt(searchBoxInput).endAt(searchBoxInput + "\uf8ff);
Wie löse ich es aber mit meinem Code, der obere Teil funktioniert nicht mehr.
Mein Code für diese Activity:
public class FindFriends {
public String profileimage, username, fullname;
public FindFriends() {
}
public FindFriends(String profileimage, String username, String fullname) {
this.profileimage = profileimage;
this.username = username;
this.fullname = fullname;
}
public String getProfileimage() {
return profileimage;
}
public void setProfileimage(String profileimage) {
this.profileimage = profileimage;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getFullname() {
return fullname;
}
public void setFullname(String fullname) {
this.fullname = fullname;
}
}
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.TextView;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.firebase.ui.database.FirebaseRecyclerOptions;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
import com.squareup.picasso.Picasso;
import de.hdodenhof.circleimageview.CircleImageView;
public class FindFriendsActivity extends AppCompatActivity {
private Toolbar mToolbar;
public ImageButton SearchButton;
public EditText SearchInputText;
private RecyclerView SearchResultList;
private DatabaseReference allUsersDatabaseRef;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_find_friends);
allUsersDatabaseRef = FirebaseDatabase.getInstance().getReference().child("Users");
mToolbar = findViewById(R.id.find_friends_bar_layout);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(false);
SearchResultList = findViewById(R.id.search_result_list);
SearchResultList.setHasFixedSize(true);
SearchResultList.setLayoutManager(new LinearLayoutManager(this));
SearchButton = findViewById(R.id.search_people_friends_button);
SearchInputText = findViewById(R.id.search_box_input);
SearchButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String searchBoxInput = SearchInputText.getText().toString();
SearchPeopleAndFriends(searchBoxInput);
}
});
}
private void SearchPeopleAndFriends(String searchBoxInput) {
FirebaseRecyclerOptions<FindFriends> options = new FirebaseRecyclerOptions.Builder<FindFriends>().
setQuery(allUsersDatabaseRef, FindFriends.class).build();
FirebaseRecyclerAdapter<FindFriends, FindFriendsActivity.FindFriendsViewHolder> adapter = new FirebaseRecyclerAdapter<FindFriends, FindFriendsViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull FindFriendsActivity.FindFriendsViewHolder holder, int position, @NonNull FindFriends model) {
final String PostKey = getRef(position).getKey();
holder.username.setText(model.getUsername());
holder.fullname.setText(model.getFullname());
Picasso.get().load(model.getProfileimage()).into(holder.profileimage);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent findFriendsIntent = new Intent(FindFriendsActivity.this, FindFriendsActivity.class);
findFriendsIntent.putExtra("PostKey", PostKey);
startActivity(findFriendsIntent);
}
});
}
@NonNull
@Override
public FindFriendsActivity.FindFriendsViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.all_users_display_layout, viewGroup, false);
FindFriendsActivity.FindFriendsViewHolder viewHolder = new FindFriendsActivity.FindFriendsViewHolder(view);
return viewHolder;
}
};
SearchResultList.setAdapter(adapter);
adapter.startListening();
}
public static class FindFriendsViewHolder extends RecyclerView.ViewHolder {
TextView username, fullname;
CircleImageView profileimage;
public FindFriendsViewHolder(@NonNull View itemView) {
super(itemView);
username = itemView.findViewById(R.id.all_users_profile_username);
fullname = itemView.findViewById(R.id.all_users_fullname);
profileimage = itemView.findViewById(R.id.all_users_profile_image);
}
}
}