【问题标题】:Custom ListView Adapter from Firebase来自 Firebase 的自定义 ListView 适配器
【发布时间】:2017-12-14 07:50:25
【问题描述】:

我想列出我从FireBase 获得的一些用户数据,例如姓名、年龄、性别和生日。我有一个FireBase 侦听器,每次更改数据库时都必须刷​​新列表。

这就是我向适配器发送数据的方式

    private void list(String Name){
    final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mUser);
    mListView.setAdapter(arrayAdapter);
    mUser.add(Name,Age,Gender,Birthday);
    arrayAdapter.notifyDataSetChanged();
}

这是我要列出的布局

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <TextView
    android:id="@+id/textNameList"
    android:textSize="25dp"
    android:textAlignment="textStart"
    android:text="Name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="start"
    android:layout_margin="10dp"/>

<TextView
    android:id="@+id/textAgeList"
    android:textSize="15dp"
    android:textAlignment="textStart"
    android:text="Age"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="start"
    android:layout_margin="10dp"/>
<TextView
    android:id="@+id/textBirthdayList"
    android:textSize="15dp"
    android:textAlignment="textStart"
    android:text="Birthday"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="start"
    android:layout_margin="10dp"/>
<TextView
    android:id="@+id/textGenderList"
    android:textSize="15dp"
    android:textAlignment="textStart"
    android:text="gender"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="start"
    android:layout_margin="10dp"/>


   </RelativeLayout>

如果可能的话,我也想列出数据库中的图片。

【问题讨论】:

  • 使用 addValueEvent 监听器,它将监听该节点 ref.addValueEventListener(new ValueEventListener() {} 中发生的所有更改
  • 谢谢,但问题是 ListView 适配器显示数据
  • 你必须在外面初始化这个final ArrayAdapter&lt;String&gt; arrayAdapter = new ArrayAdapter&lt;&gt;(this, android.R.layout.simple_list_item_1, mUser); mListView.setAdapter(arrayAdapter);,并且只有数据库中的新值添加到列表mUser.add(Name,Age,Gender,Birthday);然后设置arrayAdapter.notifyDataSetChanged();
  • 但我想在一行中显示单个用户的所有详细信息(姓名、年龄、性别、生日),这样它在每一行中显示一个详细信息,我需要一个自定义适配器允许我显示多个字符串。

标签: android listview firebase firebase-realtime-database adapter


【解决方案1】:

从快照中获取子数据并解析为如下所示的模型类并添加到arraylist。

    @Override
        public void onDataChange (DataSnapshot snapshot){

            ArrayList<Student> studentList = new ArrayList<Student>();
            for (DataSnapshot postSnapshot : snapshot.getChildren()) {
                Student student = postSnapshot.getValue(Student.class);
                studentList.add(student);
            }
            //use custom adapter here.
        }

有关在回收器视图中自定义适配器到 arralist 模型类的更多参考,请参阅以下链接 https://www.androidhive.info/2016/01/android-working-with-recycler-view/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多