要在来自Firebase的RecyclerView中展示对象,需要以下几个步骤:
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
MyAdapter adapter = new MyAdapter(dataList);
recyclerView.setAdapter(adapter);
public class MyAdapter extends RecyclerView.Adapter {
private List dataList;
public MyAdapter(List dataList) {
this.dataList = dataList;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Data data = dataList.get(position);
holder.bind(data);
}
@Override
public int getItemCount() {
return dataList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private TextView textView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.textView);
}
public void bind(Data data) {
textView.setText(data.getText());
}
}
}
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference reference = database.getReference("data");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
List dataList = new ArrayList<>();
for (DataSnapshot dataSnapshot : snapshot.getChildren()) {
Data data = dataSnapshot.getValue(Data.class);
dataList.add(data);
}
adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
// 处理取消操作
}
});
其中,Data
是一个自定义的数据类,它应该具有与Firebase数据库中的数据相匹配的字段。
这样,就能够在来自Firebase的RecyclerView中展示对象了。