• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

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

Android 来源:wdyz 4次浏览

我有这个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 – >全选 – >输入

这应该是它


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)