gpt4 book ai didi

android - 使用 FirebaseRecyclerAdapter 进行 Firebase 搜索(Firebase UI 3.2.2)

转载 作者:行者123 更新时间:2023-11-29 01:03:51 26 4
gpt4 key购买 nike

我有一个 fragment ,其中我使用 RecyclerView 显示了来自 Firebase DB 的所有对象。在同一个 fragment 中,我有一个 EditText。

目标:用户可以在 Firebase 数据库中进行搜索。搜索结果应填充到同一个 RecyclerView 中,其中最初显示了数据库中的所有对象。为此,我使用 FirebaseRecyclerAdapter,它由 FirebaseUI Version 3.2.2 提供。为了达到这个结果,我遵循了这个 YouTube 教程 https://www.youtube.com/watch?v=b_tz8kbFUsU .

问题:结果不显示,搜索功能不工作。

这是我的代码。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
final Bundle savedInstanceState) {

// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_best_buys, container, false);

recView = view.findViewById(R.id.fragment_best_buys_recycler_view_two);
databaseReference = FirebaseDatabase.getInstance().getReference(Database_Path);

// Edit Text Listener
mEditText = view.findViewById(R.id.fragment_best_buys_edit_text);
Button test = view.findViewById(R.id.faccia_search);
test.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String searchText = mEditText.getText().toString();
firebaseUserSearch(searchText);
}
});

return view;
}

private void firebaseUserSearch(String searchText) {

System.out.print("I am searching: " + searchText);

Toast.makeText(getActivity(), "Started Search " + searchText, Toast.LENGTH_LONG).show();

Query firebaseSearchQuery = databaseReference.orderByChild("product_name")
.startAt(searchText)
.endAt(searchText + "\uf8ff");

FirebaseRecyclerOptions<BestBuysProducts> options =
new FirebaseRecyclerOptions.Builder<BestBuysProducts>()
.setQuery(firebaseSearchQuery, BestBuysProducts.class)
.build();

FirebaseRecyclerAdapter<BestBuysProducts, BestBuysViewHolder> adapter = new FirebaseRecyclerAdapter<BestBuysProducts, BestBuysViewHolder>(options) {
@Override
public BestBuysViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_best_buys, parent, false);
return new BestBuysViewHolder(view);
}

@Override
protected void onBindViewHolder(@NonNull BestBuysViewHolder holder, int position, @NonNull BestBuysProducts model) {
holder.setDetails(getContext(), model.getProduct_name());

}};

recView.setLayoutManager(new LinearLayoutManager(getContext()));
recView.setAdapter(adapter);

}

查看持有者类

public static class BestBuysViewHolder extends RecyclerView.ViewHolder {

View mView;

public BestBuysViewHolder(View itemView) {
super(itemView);
mView = itemView;
}


public void setDetails(final Context ctx, final String productName) {
TextView titleTextView = itemView.findViewById(R.id.item_best_buys_title);
titleTextView.setText(productName);
}

谢谢!

最佳答案

private void firebaseUserSearch(String searchText) {

/*Toast.makeText(AllUserActivity.this, "Started Search", Toast.LENGTH_LONG).show();*/
progressBar.setVisibility(View.VISIBLE);


Query firebaseSearchQuery = mUserDatabase.orderByChild("name").startAt(searchText).endAt(searchText + "\uf8ff");

//set Options
FirebaseRecyclerOptions<Users> options =
new FirebaseRecyclerOptions.Builder<Users>()
.setQuery(firebaseSearchQuery, Users.class)
.setLifecycleOwner(this)
.build();

adapter = new FirebaseRecyclerAdapter<Users, UserviewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull UserviewHolder holder, int position, @NonNull Users model) {

holder.setNama(model.getName());

holder.setstatus(model.getAddress());
holder.setMcCircleImageView(model.getThumb_image());

progressBar.setVisibility(View.GONE);





final String user_id = getRef(position).getKey();

holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {


if (!user_id.equals(FirebaseAuth.getInstance().getCurrentUser().getUid())){

Intent i = new Intent(AllUserActivity.this, ProfilActivity.class);
i.putExtra("user_id", user_id);
startActivity(i);
}else {
Intent i = new Intent(AllUserActivity.this, AcountSettings.class);
i.putExtra("user_id", user_id);
startActivity(i);
}

}
});
}

@NonNull
@Override
public UserviewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View mView = LayoutInflater.from(parent.getContext()).inflate(R.layout.user_singgle_layout, parent, false);
return new UserviewHolder(mView);
}
};

mListView.setAdapter(adapter);

}

private void closeKeyboard(){
View view = this.getCurrentFocus();
if (view != null){
InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
if (inputMethodManager != null) {
inputMethodManager.hideSoftInputFromInputMethod(view.getWindowToken(), 0);
}
}
}
@Override
protected void onStart() {
super.onStart();


//important for fibrebase database ui
adapter.startListening();




}

@Override
protected void onStop() {
super.onStop();
//important for fibrebase database ui
adapter.stopListening();
}

//VIEW HOLDER
public class UserviewHolder extends RecyclerView.ViewHolder {
View mView;
TextView mdisplayname,mstatus ;
CircleImageView mcCircleImageView;
public UserviewHolder(View itemView) {
super(itemView);
mView = itemView;

mdisplayname = (TextView) mView.findViewById(R.id.user_singgle_name);
mstatus = (TextView) mView.findViewById(R.id.user_single_status);
mcCircleImageView = (CircleImageView) mView.findViewById(R.id.profil_single_layout);



}
public void setNama(String display_name){

mdisplayname.setText(display_name);

}
public void setstatus(String status){
mstatus.setText(status);
}
public void setMcCircleImageView(final String img_uri){
//Picasso.with(UsersActivity.this).load(img_uri).placeholder(R.drawable.user).into(mcCircleImageView);
if (!img_uri.equals("default")){
Picasso.with(AllUserActivity.this).load(img_uri).networkPolicy(NetworkPolicy.OFFLINE)
.placeholder(R.drawable.default_avatar).into(mcCircleImageView, new Callback() {
@Override
public void onSuccess() {

}

@Override
public void onError() {
Picasso.with(AllUserActivity.this).load(img_uri).placeholder(R.drawable.default_avatar).into(mcCircleImageView);

}
});

}else{
Picasso.with(AllUserActivity.this).load(R.drawable.default_avatar).into(mcCircleImageView);

}
}
}

关于android - 使用 FirebaseRecyclerAdapter 进行 Firebase 搜索(Firebase UI 3.2.2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49071905/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com