火力地堡数据库将数据加载到列表视图
{     "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








