将 firebase 发布到 recyclerview android。没有数据显示
Issue getting firebase to recyclerview android. No data showing up
我无法让我的 Firebase 数据显示在我的 RecyclerView 中。我能够将其他活动的数据添加到我的 Firebase 数据库,我只是在查看 RecyclerView 中的数据时遇到问题。
我创建了一个 FriebaseRecyclerAdapter,它使用 Recipe.class 和我的 RecipeViewHolder。如果我的 class(名称、评级和描述),我的 ViewHolder 包含三个部分。我在 Logcat.
中没有收到任何有用的错误
RecipeList.class
public class RecipeList extends AppCompatActivity {
private RecyclerView recipes;
private FloatingActionButton newRecipeBtn;
private DatabaseReference mRecipeDatabase;
private RecyclerView.LayoutManager mLayoutManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recipe_list);
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
mRecipeDatabase = FirebaseDatabase.getInstance().getReference("Recipes");
newRecipeBtn = findViewById(R.id.fab);
recipes = findViewById(R.id.recyclerView);
recipes.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(this);
recipes.setLayoutManager(mLayoutManager);
recipes.setItemAnimator(new DefaultItemAnimator());
recipes.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL));
FirebaseRecyclerAdapter<Recipe, RecipeViewHolder> adapter = new FirebaseRecyclerAdapter<Recipe, RecipeViewHolder>(
Recipe.class,
R.layout.recycler_list_item,
RecipeViewHolder.class,
mRecipeDatabase
) {
@Override
protected void populateViewHolder(RecipeViewHolder viewHolder, Recipe model, int position) {
viewHolder.setName(model.getName());
viewHolder.setRating(model.getRating());
viewHolder.setDescription(model.getDescription());
}
};
recipes.setAdapter(adapter);
}
public void toRecipeAdd(View view){
Intent intent = new Intent(RecipeList.this, RecipeAdd.class);
startActivity(intent);
}
public static class RecipeViewHolder extends RecyclerView.ViewHolder{
TextView text_name, text_rating, text_description;
public RecipeViewHolder(View itemView){
super(itemView);
text_name = itemView.findViewById(R.id.recipeNameTextView);
text_rating = itemView.findViewById(R.id.recipeRatingTextView);
text_description = itemView.findViewById(R.id.recipeDescriptionTextView);
}
public void setName(String name){
text_name.setText(name);
}
public void setRating(String rating){
text_rating.setText(rating);
}
public void setDescription(String description){
text_description.setText(description);
}
}
}
Recipe.Class
public class Recipe {
public String name;
public String url;
public String rating;
public String description;
public String id;
public String ingredients, instruction;
public Recipe(){}
public Recipe(String id, String name, String url, String rating, String description,
String ingredients, String instruction) {
this.id = id;
this.name = name;
this.url = url;
this.rating = rating;
this.description = description;
this.ingredients = ingredients;
this.instruction = instruction;
}
public Recipe(String name, String rating, String description){
this.name = name;
this.rating = rating;
this.description = description;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getRating() {
return rating;
}
public void setRating(String rating) {
this.rating = rating;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getIngredients() {
return ingredients;
}
public void setIngredients(String ingredients) {
this.ingredients = ingredients;
}
public String getInstruction() {
return instruction;
}
public void setInstruction(String instruction) {
this.instruction = instruction;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
删除以下内容以显示数据:
recipes.setHasFixedSize(true);
参考这个:
我无法让我的 Firebase 数据显示在我的 RecyclerView 中。我能够将其他活动的数据添加到我的 Firebase 数据库,我只是在查看 RecyclerView 中的数据时遇到问题。
我创建了一个 FriebaseRecyclerAdapter,它使用 Recipe.class 和我的 RecipeViewHolder。如果我的 class(名称、评级和描述),我的 ViewHolder 包含三个部分。我在 Logcat.
中没有收到任何有用的错误RecipeList.class
public class RecipeList extends AppCompatActivity {
private RecyclerView recipes;
private FloatingActionButton newRecipeBtn;
private DatabaseReference mRecipeDatabase;
private RecyclerView.LayoutManager mLayoutManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recipe_list);
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
mRecipeDatabase = FirebaseDatabase.getInstance().getReference("Recipes");
newRecipeBtn = findViewById(R.id.fab);
recipes = findViewById(R.id.recyclerView);
recipes.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(this);
recipes.setLayoutManager(mLayoutManager);
recipes.setItemAnimator(new DefaultItemAnimator());
recipes.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL));
FirebaseRecyclerAdapter<Recipe, RecipeViewHolder> adapter = new FirebaseRecyclerAdapter<Recipe, RecipeViewHolder>(
Recipe.class,
R.layout.recycler_list_item,
RecipeViewHolder.class,
mRecipeDatabase
) {
@Override
protected void populateViewHolder(RecipeViewHolder viewHolder, Recipe model, int position) {
viewHolder.setName(model.getName());
viewHolder.setRating(model.getRating());
viewHolder.setDescription(model.getDescription());
}
};
recipes.setAdapter(adapter);
}
public void toRecipeAdd(View view){
Intent intent = new Intent(RecipeList.this, RecipeAdd.class);
startActivity(intent);
}
public static class RecipeViewHolder extends RecyclerView.ViewHolder{
TextView text_name, text_rating, text_description;
public RecipeViewHolder(View itemView){
super(itemView);
text_name = itemView.findViewById(R.id.recipeNameTextView);
text_rating = itemView.findViewById(R.id.recipeRatingTextView);
text_description = itemView.findViewById(R.id.recipeDescriptionTextView);
}
public void setName(String name){
text_name.setText(name);
}
public void setRating(String rating){
text_rating.setText(rating);
}
public void setDescription(String description){
text_description.setText(description);
}
}
}
Recipe.Class
public class Recipe {
public String name;
public String url;
public String rating;
public String description;
public String id;
public String ingredients, instruction;
public Recipe(){}
public Recipe(String id, String name, String url, String rating, String description,
String ingredients, String instruction) {
this.id = id;
this.name = name;
this.url = url;
this.rating = rating;
this.description = description;
this.ingredients = ingredients;
this.instruction = instruction;
}
public Recipe(String name, String rating, String description){
this.name = name;
this.rating = rating;
this.description = description;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getRating() {
return rating;
}
public void setRating(String rating) {
this.rating = rating;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getIngredients() {
return ingredients;
}
public void setIngredients(String ingredients) {
this.ingredients = ingredients;
}
public String getInstruction() {
return instruction;
}
public void setInstruction(String instruction) {
this.instruction = instruction;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
删除以下内容以显示数据:
recipes.setHasFixedSize(true);
参考这个: