此处是屏幕截图,这是此活动的结果,我已经使用上载功能在firebase上添加了一些数据,它在视图中仅显示空白。
这是“活动”,我曾在youtube上参考过该教程,但无法从Firebase检索到我的项目中的数据。当我查看列表时,它仅显示为空白,有人帮助我。
public class RecipeList extends AppCompatActivity {
RecyclerView mRecyclerView;
List<FoodData> myFoodList;
FoodData mFoodData;
ValueEventListener eventListener;
private DatabaseReference databaseReference;
ProgressDialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recipe_list);
mRecyclerView = (RecyclerView)findViewById(R.id.recycleView);
GridLayoutManager gridLayoutManager = new GridLayoutManager(RecipeList.this,1);
mRecyclerView.setLayoutManager(gridLayoutManager);
progressDialog = new ProgressDialog(this);
progressDialog.setMessage("Loading Items");
myFoodList = new ArrayList<>();
final MyAdapter myAdapter = new MyAdapter(RecipeList.this,myFoodList);
mRecyclerView.setAdapter(myAdapter);
databaseReference = FirebaseDatabase.getInstance().getReference("Recipe");
progressDialog.show();
eventListener = databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
//myFoodList.clear();
for(DataSnapshot itemSnapshot:dataSnapshot.getChildren()){
FoodData foodData = itemSnapshot.getValue(FoodData.class);
myFoodList.add(foodData);
}
myAdapter.notifyDataSetChanged();
progressDialog.dismiss();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
progressDialog.dismiss();
}
});
}
}
这是适配器
public class MyAdapter extends RecyclerView.Adapter<FoodViewHolder>{
private Context mContex;
private List<FoodData> myFoodList;
public MyAdapter(Context mContex, List<FoodData> myFoodList) {
this.mContex = mContex;
this.myFoodList = myFoodList;
}
@NonNull
@Override
public FoodViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View mView = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycleview_layout,parent,false);
return new FoodViewHolder(mView);
}
@Override
public void onBindViewHolder(@NonNull final FoodViewHolder holder, int position) {
Glide.with(mContex).load(myFoodList.get(position).getItemIamge()).into(holder.imageView);
holder.title.setText(myFoodList.get(position).getItemNme());
holder.description.setText(myFoodList.get(position).getItemDescription());
holder.mCardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(mContex, detailRecipe.class);
intent.putExtra("Image",myFoodList.get(holder.getAdapterPosition()).getItemIamge());
intent.putExtra("Description",myFoodList.get(holder.getAdapterPosition()).getItemDescription());
//intent.putExtra("keyValue",myFoodList.get(holder.getAdapterPosition()).getKey());
mContex.startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return myFoodList.size();
}
public void filteredList(ArrayList<FoodData> filterList) {
myFoodList= filterList;
notifyDataSetChanged();
}
}
class FoodViewHolder extends RecyclerView.ViewHolder {
ImageView imageView;
TextView title,description;
CardView mCardView;
public FoodViewHolder(@NonNull View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.ivImage);
title = itemView.findViewById(R.id.title);
description = itemView.findViewById(R.id.description);
mCardView = itemView.findViewById(R.id.cardView);
}
}
答案 0 :(得分:0)
请将此代码发布到您的onDataChange中:
final MyAdapter myAdapter = new MyAdapter(RecipeList.this,myFoodList);
mRecyclerView.setAdapter(myAdapter);
根据您的代码,您刚刚向适配器提供了一个空列表。
eventListener = databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
//myFoodList.clear();
for(DataSnapshot itemSnapshot:dataSnapshot.getChildren()){
FoodData foodData = itemSnapshot.getValue(FoodData.class);
myFoodList.add(foodData);
}
final MyAdapter myAdapter = new MyAdapter(RecipeList.this,myFoodList);
mRecyclerView.setAdapter(myAdapter);
myAdapter.notifyDataSetChanged();
progressDialog.dismiss();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
progressDialog.dismiss();
}
});