📌  相关文章
📜  如何在Android ListView中从Firebase实时数据库检索数据?(1)

📅  最后修改于: 2023-12-03 15:08:51.050000             🧑  作者: Mango

如何在Android ListView中从Firebase实时数据库检索数据?

Firebase是一个实时数据库和后端服务的平台,它可以用于开发Android应用程序。在本文中,我们将学习如何在Android ListView中检索Firebase实时数据库中的数据。

步骤
1.添加Firebase到Android项目

首先,我们需要在Android应用程序中添加FirebaseSDK。请按照以下步骤操作:

  1. 登录Firebase控制台:https://console.firebase.google.com/
  2. 创建一个Firebase项目
  3. 在“项目设置”中,选择“添加Firebase到您的Android应用程序”
  4. 输入应用程序的包名称
  5. 下载并添加google-services.json文件到项目根目录中
2.添加Firebase实时数据库依赖

在build.gradle文件中添加以下依赖:

implementation 'com.google.firebase:firebase-database:19.3.1'
3.在AndroidManifest.xml文件中添加Internet权限
<uses-permission android:name="android.permission.INTERNET" />
4.在布局文件中添加ListView

在activity_main.xml文件中添加ListView:

<ListView
    android:id="@+id/listView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
5.创建Java类

创建一个Java类来检索Firebase实时数据库中的数据并在ListView中显示它们。在这个示例中,我们将使用“Task”类,它具有id,title和description字段。

public class Task {
    private String id;
    private String title;
    private String description;

    public Task() {

    }

    public Task(String id, String title, String description) {
        this.id = id;
        this.title = title;
        this.description = description;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}
6.在MainActivity.java文件中添加代码

在MainActivity.java文件中,我们将从Firebase实时数据库检索数据并在ListView中显示它们。

public class MainActivity extends AppCompatActivity {
    private DatabaseReference mDatabase;
    private ListView mListView;
    private List<Task> mTaskList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mDatabase = FirebaseDatabase.getInstance().getReference();
        mListView = findViewById(R.id.listView);
        mTaskList = new ArrayList<>();

        // 从Firebase实时数据库中检索数据
        mDatabase.child("tasks").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                mTaskList.clear();

                for (DataSnapshot taskSnapshot : dataSnapshot.getChildren()) {
                    Task task = taskSnapshot.getValue(Task.class);
                    mTaskList.add(task);
                }

                // 在ListView中显示检索到的数据
                TaskAdapter adapter = new TaskAdapter(MainActivity.this, mTaskList);
                mListView.setAdapter(adapter);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                Log.w("MainActivity", "loadPost:onCancelled", databaseError.toException());
            }
        });
    }

    // 自定义适配器将数据显示在ListView中
    private class TaskAdapter extends ArrayAdapter<Task> {
        private List<Task> tasks;

        private TaskAdapter(Context context, List<Task> tasks) {
            super(context, R.layout.task_row_layout, tasks);
            this.tasks = tasks;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            LayoutInflater inflater = getLayoutInflater();
            View view = inflater.inflate(R.layout.task_row_layout, parent, false);

            TextView titleTextView = view.findViewById(R.id.titleTextView);
            TextView descriptionTextView = view.findViewById(R.id.descriptionTextView);

            Task task = tasks.get(position);
            titleTextView.setText(task.getTitle());
            descriptionTextView.setText(task.getDescription());

            return view;
        }
    }
}
结论

现在,我们已经学会了如何在Android ListView中检索Firebase实时数据库中的数据。我们创建了一个Task类来表示数据,并定义了一个自定义适配器来将数据显示在ListView中。我们从Firebase实时数据库中检索数据,并在适配器中使用ListView来显示它们。