在android中使用firebase数据填充ListView
我又回到这个问题上来了,虽然我很接近:我有下面的代码,我试图在列表视图中显示firebase值在android中使用firebase数据填充ListView,android,firebase,firebase-realtime-database,firebaseui,Android,Firebase,Firebase Realtime Database,Firebaseui,我又回到这个问题上来了,虽然我很接近:我有下面的代码,我试图在列表视图中显示firebase值 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_mystatement); listview = (ListView) findViewById(R.id.li
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mystatement);
listview = (ListView) findViewById(R.id.listview);
textView4 = (TextView) findViewById(R.id.textView4);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, list);
listview.setAdapter(adapter);
dref = FirebaseDatabase.getInstance().getReference();
DatabaseReference dref = FirebaseDatabase.getInstance().getReference();
dref= dref.child("Expenditure");
dref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
for (DataSnapshot postSnapshot : snapshot.getChildren()) {
//Getting the data from snapshot
DogExpenditure dogExpenditure = postSnapshot.getValue(DogExpenditure.class);
//Adding it to a string
String expenses = "Amount: "+dogExpenditure.getAmount()+"\nReason for Use: "+dogExpenditure.getItem()+"\n\n";
String amount = dogExpenditure.getAmount();
String item = dogExpenditure.getItem();
System.out.println(expenses);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
public void onCancelled(FirebaseError firebaseError) {
System.out.println("The read failed: " + firebaseError.getMessage());
}
});
有人能告诉我如何在我的应用程序中显示该输出吗,因为目前它没有显示任何内容,但在调试控制台中我可以看到它生成dref的单例对象
列表尚未初始化。您应该将您的费用添加到列表中,并使用
adapter.notifyDataSetChanged() 列表.添加(费用) adapter.notifyDataSetChanged()
//就在onCreate上面
List expenseList=new ArrayList();
阵列适配器;
//值内事件侦听器
expenseList.add(费用)
if(expensList.size()=1)
{
adapter=newarrayadapter(getApplicationContext(),android.R.layout.simple\u list\u item\u 1,expensList);
setAdapter(适配器)
}
else if(expenseList.size()>1)
{
adapter.notifyDatasetChanged();
}
您可以使用
用firebase数据填充listView非常简单
只需添加依赖项即可:
listview = (ListView) findViewById(R.id.listview);
DatabaseReference dref = FirebaseDatabase.getInstance().getReference();
mAdapter = new FirebaseListAdapter<DogExpenditure>(this, DogExpenditure.class, R.layout.yourLayout, ref) {
@Override
protected void populateView(View view, DogExpenditure myObj, int position) {
//populate your view
String amount = dogExpenditure.getAmount()
//Put the value in your layout.
}
};
listview.setAdapter(mAdapter);
listview=(listview)findViewById(R.id.listview);
DatabaseReference dref=FirebaseDatabase.getInstance().getReference();
mAdapter=新的FirebaseListAdapter(this,dogExpression.class,R.layout.yourLayout,ref){
@凌驾
受保护的void populateView(视图视图、dogbj、int位置){
//填充您的视图
字符串金额=支出。getAmount()
//将值放入布局中。
}
};
setAdapter(mAdapter);
更多信息。首先创建一个适配器,因为您已经拥有model类。 MyAdapter.java
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private Context context;
private List<DogExpenditure> uploads;
public MyAdapter(Context context, List<DogExpenditure> uploads) {
this.uploads = uploads;
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.layout_firebase_images, parent, false);
ViewHolder viewHolder = new ViewHolder(v);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
DogExpenditure upload = uploads.get(position);
holder.textViewName.setText(upload.getAmount());
holder.textView1.setText(upload.getYourData());
}
@Override
public int getItemCount() {
return uploads.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
public TextView textViewName;
public ImageView imageView;
public ViewHolder(View itemView) {
super(itemView);
textViewName = (TextView) itemView.findViewById(R.id.textViewName);
textview1 = (TextView) itemView.findViewById(R.id.your_id);
}
}
}
公共类MyAdapter扩展了RecyclerView.Adapter{
私人语境;
私人名单上传;
公共MyAdapter(上下文、列表上载){
this.uploads=上传;
this.context=上下文;
}
@凌驾
public ViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图v=LayoutInflater.from(parent.getContext())
.充气(R.layout.layout\u firebase\u图像,父级,假);
视窗夹持器视窗夹持器=新视窗夹持器(v);
返回视图持有者;
}
@凌驾
公共无效onBindViewHolder(ViewHolder,int位置){
上传=上传。获取(位置);
holder.textViewName.setText(upload.getAmount());
holder.textView1.setText(upload.getYourData());
}
@凌驾
public int getItemCount(){
返回uploads.size();
}
类ViewHolder扩展了RecyclerView.ViewHolder{
公共文本视图文本视图名称;
公共影像视图;
公共视图持有者(视图项视图){
超级(项目视图);
textViewName=(TextView)itemView.findViewById(R.id.textViewName);
textview1=(TextView)itemView.findViewById(R.id.your_id);
}
}
}
现在进入你的活动
private List<DogExpenditure> uploads;
MyAdapter adapter;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mystatement);
listview = (ListView) findViewById(R.id.listview);
textView4 = (TextView) findViewById(R.id.textView4);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, list);
listview.setAdapter(adapter);
dref = FirebaseDatabase.getInstance().getReference();
uploads = new ArrayList<>();
DatabaseReference dref = FirebaseDatabase.getInstance().getReference();
dref= dref.child("Expenditure");
dref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
for (DataSnapshot postSnapshot : snapshot.getChildren()) {
//Getting the data from snapshot
DogExpenditure dogExpenditure = postSnapshot.getValue(DogExpenditure.class);
uploads.add(dogExpenditure);
}
adapter = new MyAdapter(getApplicationContext(), uploads);
recyclerView.setAdapter(adapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
public void onCancelled(FirebaseError firebaseError) {
System.out.println("The read failed: " + firebaseError.getMessage());
}
});
私有列表上传;
MyAdapter适配器;
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u mystatement);
listview=(listview)findViewById(R.id.listview);
textView4=(TextView)findViewById(R.id.textView4);
adapter=new ArrayAdapter(这是android.R.layout.simple\u下拉列表\u项\u 1行,列表);
setAdapter(适配器);
dref=FirebaseDatabase.getInstance().getReference();
uploads=新建ArrayList();
DatabaseReference dref=FirebaseDatabase.getInstance().getReference();
dref=dref.儿童(“支出”);
dref.addValueEventListener(新的ValueEventListener(){
@凌驾
公共无效onDataChange(数据快照快照){
对于(DataSnapshot postSnapshot:snapshot.getChildren()){
//从快照获取数据
DogExpression dogExpression=postSnapshot.getValue(dogExpression.class);
上传。添加(DogExpense);
}
adapter=新的MyAdapter(getApplicationContext(),上载);
recyclerView.setAdapter(适配器);
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
取消后的公共无效(FirebaseError FirebaseError){
System.out.println(“读取失败:+firebaseError.getMessage());
}
});
shift此行listview.setAdapter(adapter);作为“创建自定义baseadapter”函数的最后一行,将firebase数据存储在arraylist中,并将其传递给adapter。@NiteshMishra示例..如果不介意的话
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private Context context;
private List<DogExpenditure> uploads;
public MyAdapter(Context context, List<DogExpenditure> uploads) {
this.uploads = uploads;
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.layout_firebase_images, parent, false);
ViewHolder viewHolder = new ViewHolder(v);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
DogExpenditure upload = uploads.get(position);
holder.textViewName.setText(upload.getAmount());
holder.textView1.setText(upload.getYourData());
}
@Override
public int getItemCount() {
return uploads.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
public TextView textViewName;
public ImageView imageView;
public ViewHolder(View itemView) {
super(itemView);
textViewName = (TextView) itemView.findViewById(R.id.textViewName);
textview1 = (TextView) itemView.findViewById(R.id.your_id);
}
}
}
private List<DogExpenditure> uploads;
MyAdapter adapter;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mystatement);
listview = (ListView) findViewById(R.id.listview);
textView4 = (TextView) findViewById(R.id.textView4);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, list);
listview.setAdapter(adapter);
dref = FirebaseDatabase.getInstance().getReference();
uploads = new ArrayList<>();
DatabaseReference dref = FirebaseDatabase.getInstance().getReference();
dref= dref.child("Expenditure");
dref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
for (DataSnapshot postSnapshot : snapshot.getChildren()) {
//Getting the data from snapshot
DogExpenditure dogExpenditure = postSnapshot.getValue(DogExpenditure.class);
uploads.add(dogExpenditure);
}
adapter = new MyAdapter(getApplicationContext(), uploads);
recyclerView.setAdapter(adapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
public void onCancelled(FirebaseError firebaseError) {
System.out.println("The read failed: " + firebaseError.getMessage());
}
});