我是android开发的新手。我正在尝试创建Firebase数据列表。所以我创建了一个recyclerview并在recyclerview中表示数据。 我已经从firebase获取了数据并分配给适配器类。但是数据没有显示在recyclerview中。
片段类
public class HomeFragment extends Fragment {
DatabaseReference reference;
RecyclerView recyclerView;
ArrayList<Carmodel> list = new ArrayList<>();;
CarAdapter adapter;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.recyclerview, container, false);
recyclerView = (RecyclerView) root.findViewById(R.id.recycler);
recyclerView.setLayoutManager( new LinearLayoutManager(getContext()));
reference = FirebaseDatabase.getInstance().getReference().child("AddCar");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
Carmodel p = dataSnapshot1.getValue(Carmodel.class);
Log.e("Get Data", p.getCarName());
list.add(p);
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Toast.makeText(getActivity(), "Opsss.... Something is wrong", Toast.LENGTH_SHORT).show();
}
});
adapter = new CarAdapter(getContext(), list);
recyclerView.setAdapter(adapter);
adapter.notifyDataSetChanged();
return root;
}
}
Adapert班
public class CarAdapter extends RecyclerView.Adapter<CarAdapter.MyViewHolder> {
Context context;
ArrayList<Carmodel> profiles;
public CarAdapter(Context c , ArrayList<Carmodel> p)
{
context = c;
profiles = p;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new MyViewHolder(LayoutInflater.from(context).inflate(R.layout.fragment_admin_home, parent, false));
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.name.setText(profiles.get(position).getCarName());
holder.seater.setText(profiles.get(position).getSeater());
holder.price.setText(profiles.get(position).getPrice());
holder.status.setText(profiles.get(position).getAvailable());
Picasso.get().load(profiles.get(position).getImageURL()).into(holder.car_image);
}
@Override
public int getItemCount() {
return profiles.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder
{
TextView name,seater,price, status;
ImageView car_image;
@SuppressLint("CutPasteId")
public MyViewHolder(View itemView) {
super(itemView);
name = (TextView) itemView.findViewById(R.id.CarName);
seater = (TextView) itemView.findViewById(R.id.Seater);
price = (TextView) itemView.findViewById(R.id.Seater);
car_image = (ImageView) itemView.findViewById(R.id.imageView);
status = (TextView) itemView.findViewById(R.id.Status);
}
}
答案 0 :(得分:0)
您在错误的时间通知适配器以进行数据更改
adapter = new CarAdapter(getContext(), list);
recyclerView.setAdapter(adapter);
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
Carmodel p = dataSnapshot1.getValue(Carmodel.class);
Log.e("Get Data", p.getCarName());
list.add(p);
}
adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Toast.makeText(getActivity(), "Opsss.... Something is wrong", Toast.LENGTH_SHORT).show();
}
});
请这样修改您的方法
答案 1 :(得分:0)
Carmodel p = dataSnapshot1.getValue(Carmodel.class);
确保它(p)不为空