作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题已经困扰我一段时间了。我以前从未真正使用过 ListViews,也没有使用过 FirebaseListAdapters。我想做的就是通过显示 id 和用户位置来启动列表的基础,但由于某种原因,populateView 覆盖没有被调用,我不明白为什么..
XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context=".RequestActivity"
android:orientation="vertical"
android:padding="20dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Requested"
android:gravity="center"
android:textSize="20sp"/>
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/ListView"/>
</LinearLayout>
请求 Activity
package com.dotcreate.rfal;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import android.widget.TextView;
//Firebase imports
import com.firebase.ui.database.FirebaseListAdapter;
import com.firebase.ui.database.FirebaseListOptions;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
public class RequestActivity extends AppCompatActivity {
private ListView ListView;
private FirebaseListOptions<Requests> listAdapterOptions;
private FirebaseListAdapter<Requests> listAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.rider_request);
//Set our listview
rideRequestListView = (ListView) findViewById(R.id.ListView);
listening = false;
populateListView();
}
private void populateListView(){
/*
Create a database reference to the request
*/
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
DatabaseReference requestReference = FirebaseDatabase.getInstance().getReference().child("Requests");
requestReference.keepSynced(true);
requestReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
DatabaseReference requestReference = FirebaseDatabase.getInstance().getReference().child("Requests");
listAdapterOptions = new FirebaseListOptions.Builder<Requests>()
.setLayout(android.R.layout.simple_list_item_1)
.setQuery(requestReference, Requests.class)
.build();
listAdapter = new FirebaseListAdapter<Requests>(listAdapterOptions) {
@Override
protected void populateView(View v, RideRequests requests, int position) {
((TextView)v.findViewById(android.R.id.text1)).setText(requests.getID());
}
};
ListView.setAdapter(listAdapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
这一直让我抓狂,所以我希望有人能提供帮助。
最佳答案
您不需要在 addValueEventListener
中添加适配器
来检索数据。请尝试以下操作:
DatabaseReference requestReference = FirebaseDatabase.getInstance().getReference().child("Requests");
listAdapterOptions = new FirebaseListOptions.Builder<Requests>()
.setLayout(android.R.layout.simple_list_item_1)
.setQuery(requestReference, Requests.class)
.build();
listAdapter = new FirebaseListAdapter<Requests>(listAdapterOptions) {
@Override
protected void populateView(View v, RideRequests requests, int position) {
((TextView)v.findViewById(android.R.id.text1)).setText(requests.getID());
}
};
ListView.setAdapter(listAdapter);
查看此处了解更多信息:
还可以使用startListening
来填充数据:
@Override
protected void onStart() {
super.onStart();
listAdapter.startListening();
}
关于java - FirebaseListAdapter 未 populateView 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58872919/
这个问题已经困扰我一段时间了。我以前从未真正使用过 ListViews,也没有使用过 FirebaseListAdapters。我想做的就是通过显示 id 和用户位置来启动列表的基础,但由于某种原因,
我在 build.gradle 中使用了以下依赖项: compile 'com.google.firebase:firebase-database:11.4.2' compile 'com.fireb
我是一名优秀的程序员,十分优秀!