【发布时间】:2019-11-15 08:22:11
【问题描述】:
这已经让我头疼了一段时间了。我以前从未真正使用过 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>
请求活动
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) {
}
});
}
}
这一直让我扯头发,所以我希望有人能帮忙。
【问题讨论】:
-
你试过答案了吗?
-
我现在正在工作,所以我会在上班时尝试更新每个人。
-
哎呀...哈哈。我会在几个小时后离开,然后通知你哈哈。
标签: java android firebase firebase-realtime-database firebaseui