火力地堡数据库将数据加载到列表视图
{ "customers" : {
"-L-OcgJ0kwTNSm6HoSvG" : {
"address" : "Test Alamat",
"birthday" : "1990-12-03",
"email" : "[email protected]",
"name" : "Dodi",
"outletID" : "2673",
"phone" : "09888777111"
}
}
}
现在我想的“客户”的所有数据加载到使用FirebaseUI-的Android库的ListView。这里是代码:
Query query = FirebaseDatabase.getInstance().getReference().child("customers").limitToLast(50); FirebaseListOptions<Customers> options = new FirebaseListOptions.Builder<Customers>()
.setLayout(R.layout.row_customer)
.setQuery(query, Customers.class)
.build();
FirebaseListAdapter<Customers> adapter = new FirebaseListAdapter<Customers>(options) {
@Override
protected void populateView(View view, Customers customer, int position) {
((TextView) view.findViewById(R.id.txtCustomerName)).setText(customer.name);
((TextView) view.findViewById(R.id.txtCustomerAddress)).setText(customer.address);
((TextView) view.findViewById(R.id.txtCustomerPhone)).setText(customer.phone);
//and i've set the adapter into ListView
((ListView)layout.findViewById(R.id.lvCustomerList)).setAdapter(adapter);
这里是Customers.java:
@IgnoreExtraProperties public class Customers {
public String name, outletID, address, phone, birthday, email;
public Customers() {
}
public Customers(String name, String outletID, String address, String phone, String birthday, String email) {
this.name = name;
this.outletID = outletID;
this.address = address;
this.phone = phone;
this.birthday = birthday;
this.email = email;
}
}
请帮我什么是我的源代码的问题? 我运行它并且数据无法显示(在我的列表视图中只显示空白)。我的Android Studio日志没有错误。
回答:
我建议您创建自定义适配器和使用RecyclerView(这是更快,更好比一个ListView)
事情是这样的:
public class CustomerAdapter extends RecyclerView.Adapter<CustomerAdapter.MessageViewHolder> { private List<Customer> customerList;
private Context context;
public CustomerAdapter(List<Customer> customerList, Context context) {
this.customerList= customerList;
this.context = context;
}
@Override
public CustomerAdapter.MessageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.your_layout, parent, false);
return new CustomerAdapter.MessageViewHolder(v);
}
public class CustomerViewHolder extends RecyclerView.ViewHolder {
public TextView customername, customeraddress, customerphone;
public CustomerViewHolder(View view) {
super(view);
customername = view.findViewById(R.id.txtCustomerName);
customeraddress = view.findViewById(R.id.txtCustomerAddress);
customerphone = view.findViewById(R.id.txtCustomerPhone);
}
}
@Override
public int getItemCount() {
return customerList.size();
}
@Override
public void onBindViewHolder(final CustomerAdapter.MessageViewHolder holder, final int position) {
holder.customername.setText(customerList.get(position).getName;
holder.customeraddress.setText(customerList.get(position).getAddress;
holder.customerphone.setText(customerList.get(position).getPhone;
}
,你可以得到这样的数据:
FirebaseDatabase.getInstance().getReference().child("customers").addValueEventListener(new ValueEventlistener{ @Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<Customer> custoemrList = new ArrayList<>();
for (final DataSnapshot snapshot : dataSnapshot.getChildren()) {
Customer customer = new Customer();
customer.setName(snapshot.child("name").getValue().toString();
...
...
customerList.add(customer);
}
customerAdapter= new customerAdapter(customerList, YourActivity.this);
recyclerView.setAdapter(chatsAdapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
});
而在您的客户类中,您必须添加获取者和设置者。 按Alt +插入 - > getter和setter - >全选 - >输入
这应该是它
回答:
更改这行代码:
Query query = FirebaseDatabase.getInstance().getReference().child("customers").limitToLast(50)
与
Query query = FirebaseDatabase.getInstance().getReference() .child("customers")
.orderByChild("name")
.limitToLast(50);
以上是 火力地堡数据库将数据加载到列表视图 的全部内容, 来源链接: utcz.com/qa/259099.html