火力地堡数据库将数据加载到列表视图

我有这个DB结构:火力地堡数据库数据加载到列表视图

{ 

"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

回到顶部