Java 搜索选项-populateViewHolder问题-如何修复
我想在我的应用程序中使用Firebase数据库的搜索选项。。我从youtube上看了一段视频。。但根据描述,他们给出了代码。。我下载并使用了所有的错误,但我已经修复了,但这些天populateViewHolder不工作。。。。但是代码已经普及了ViewHolder。。。我在这里给出代码。。请帮我修一下。。。 请给我准确的密码。。并提到u r编辑哪个java类。。。该类的完整代码 这是搜索活动 }Java 搜索选项-populateViewHolder问题-如何修复,java,database,firebase,search,Java,Database,Firebase,Search,我想在我的应用程序中使用Firebase数据库的搜索选项。。我从youtube上看了一段视频。。但根据描述,他们给出了代码。。我下载并使用了所有的错误,但我已经修复了,但这些天populateViewHolder不工作。。。。但是代码已经普及了ViewHolder。。。我在这里给出代码。。请帮我修一下。。。 请给我准确的密码。。并提到u r编辑哪个java类。。。该类的完整代码 这是搜索活动 } 我也曾经遇到过这个问题,但我能够通过使用变量初始化您的linearlayoutmanager来解决它
我也曾经遇到过这个问题,但我能够通过使用变量初始化您的linearlayoutmanager来解决它,如--linearlayoutmanager layoutmanager=new linearlayoutmanager this--并确保添加--adapter.startListening--或将lifeCycler设置为您的firebase选项。。,。。。 我还建议您使用algolia搜索子字符串以获得更好的搜索结果,因为firebase还没有这样的功能
package com.qoutes.martins.myqoutes;
import android.content.Context;
import android.os.Bundle;
import androidx.recyclerview.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.bumptech.glide.Glide;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
public class SearchActivity extends AppCompatActivity {
private EditText mSearchField;
private ImageButton mSearchBtn;
private RecyclerView mResultList;
private DatabaseReference mUserDatabase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
mUserDatabase = FirebaseDatabase.getInstance().getReference("Users");
mSearchField = (EditText) findViewById(R.id.search_field);
mSearchBtn = (ImageButton) findViewById(R.id.search_btn);
mResultList = (RecyclerView) findViewById(R.id.result_list);
mResultList.setHasFixedSize(true);
mResultList.setLayoutManager(new LinearLayoutManager(this));
mSearchBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String searchText = mSearchField.getText().toString();
firebaseUserSearch(searchText);
}
});
}
private void firebaseUserSearch(String searchText) {
Toast.makeText(SearchActivity.this, "Started Search", Toast.LENGTH_LONG).show();
Query firebaseSearchQuery = mUserDatabase.orderByChild("name").startAt(searchText).endAt(searchText + "\uf8ff");
FirebaseRecyclerAdapter<Users, UsersViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Users, UsersViewHolder>(
Users.class,
R.layout.list_layout,
UsersViewHolder.class,
firebaseSearchQuery
) {
@NonNull
@Override
public UsersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return null;
}
@Override
protected void onBindViewHolder(@NonNull UsersViewHolder holder, int position, @NonNull Users model) {
}
@Override
protected void populateViewHolder(UsersViewHolder viewHolder, Users model, int position) {
viewHolder.setDetails(getApplicationContext(), model.getName(), model.getStatus(), model.getImage());
}
};
mResultList.setAdapter(firebaseRecyclerAdapter);
}
// View Holder Class
public static class UsersViewHolder extends RecyclerView.ViewHolder {
View mView;
public UsersViewHolder(View itemView) {
super(itemView);
mView = itemView;
}
public void setDetails(Context ctx, String userName, String userStatus, String userImage){
TextView user_name = (TextView) mView.findViewById(R.id.name_text);
TextView user_status = (TextView) mView.findViewById(R.id.status_text);
ImageView user_image = (ImageView) mView.findViewById(R.id.profile_image);
user_name.setText(userName);
user_status.setText(userStatus);
Glide.with(ctx).load(userImage).into(user_image);
}
}
public String name, image, status;
public Users(){
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Users(String name, String image, String status) {
this.name = name;
this.image = image;
this.status = status;
}
**Thanks In Advance **
***If You Say Me To Change Code Then Kindly Give Me Full Set Of Code***