Recyclerview null 与 Firebaseui
Recyclerview null with Firebaseui
我尝试使用 FirebaseUI RecyclerView 从 RealtimeDatabse 检索数据,但没有出现。我尝试了很多教程并进行了很多搜索,但没有任何帮助。我想在文本视图中检索“Parcare2”的状态。
RecyclerView所在的MainAcvitiy:
public class Parcare extends AppCompatActivity {
private RecyclerView recview;
ArrayList<Model_parcare> model_parcares;
Adapter_parcare adapter_parcare;
DatabaseReference mref;
FirebaseDatabase firebaseDatabase;
String a;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.recycler_view);
Log.d("opx", String.valueOf(mref));
recview=(RecyclerView)findViewById(R.id.recview);
mref= FirebaseDatabase.getInstance().getReference().child("PARCARE");
mref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
String name=snapshot.child("LOC").getValue().toString();
a=name;
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
recview.setLayoutManager(new LinearLayoutManager(this));
Query query = FirebaseDatabase.getInstance()
.getReference().child("Parcare2").child("status");
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
String name=snapshot.getValue().toString();
a=name;
Log.d("pore",name);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
FirebaseRecyclerOptions<Model_parcare> options =
new FirebaseRecyclerOptions.Builder<Model_parcare>()
.setQuery(query, Model_parcare.class)
.build();
Log.d("pte",query.toString());
adapter_parcare=new Adapter_parcare(options);
recview.setAdapter(adapter_parcare);
}
@Override
protected void onStart() {
super.onStart();
adapter_parcare.startListening();
}
@Override
protected void onStop() {
super.onStop();
adapter_parcare.stopListening();
}
}
RecyclerView 适配器:
public class Adapter_parcare extends FirebaseRecyclerAdapter<Model_parcare,Adapter_parcare.myviewholder>{
/**
* Initialize a {@link RecyclerView.Adapter} that listens to a Firebase query. See
* {@link FirebaseRecyclerOptions} for configuration options.
*
* @param options
*/
public Adapter_parcare(@NonNull FirebaseRecyclerOptions<Model_parcare> options) {
super(options);
}
@Override
protected void onBindViewHolder(@NonNull myviewholder holder, int position, @NonNull Model_parcare model) {
holder.textView.setText(model.getStare());
Log.d("wes",holder.textView.toString());
}
@NonNull
@Override
public myviewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_parcare,parent,false);
return new myviewholder(view);
}
class myviewholder extends RecyclerView.ViewHolder{
TextView textView;
public myviewholder(@NonNull View itemView) {
super(itemView);
textView=itemView.findViewById(R.id.stare_loc);
Log.d("lkj",textView.toString());
}
} }
型号class:
public class Model_parcare {
public String stare;
Model_parcare(){
}
public Model_parcare(String stare) {
this.stare = stare;
}
public String getStare() {
return stare;
}
}
我的 xml 数据存储位置:
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView 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"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/stare_loc"
android:layout_width="120dp"
android:layout_height="53dp"
android:text="Stare"
android:textColor="#FFE933"
android:textSize="30dp" />
</LinearLayout>
</androidx.cardview.widget.CardView>
和 recyvlerview 的 xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
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:background="#FFFFFF"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recview"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@color/black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
我的 Firebase 看起来像这样:
其次:/Parcare2/status
下有一个值,但您试图在回收站视图中显示它,该视图旨在显示项目列表。 FirebaseRecyclerAdapter
用于处理节点列表,而不是此处的单个值。
让它工作的一个简单方法是:
Query query = FirebaseDatabase.getInstance().getReference("Parcare2");
FirebaseRecyclerOptions<Model_parcare> options =
new FirebaseRecyclerOptions.Builder<String>()
.setQuery(query, new SnapshotParser<String>() {
@NonNull
@Override
public String parseSnapshot(@NonNull DataSnapshot snapshot) {
return snapshot.getValue(String.class);
}
}))
.build();
adapter_parcare=new FirebaseRecyclerAdapter(options);
recview.setAdapter(adapter_parcare);
使用此代码,适配器将显示 Parcare2
下每个 属性 的值。因此,对于问题中的 JSON,它只会显示一项“ocupat”,但您可以添加更多属性,它们也会显示出来。
我尝试使用 FirebaseUI RecyclerView 从 RealtimeDatabse 检索数据,但没有出现。我尝试了很多教程并进行了很多搜索,但没有任何帮助。我想在文本视图中检索“Parcare2”的状态。 RecyclerView所在的MainAcvitiy:
public class Parcare extends AppCompatActivity {
private RecyclerView recview;
ArrayList<Model_parcare> model_parcares;
Adapter_parcare adapter_parcare;
DatabaseReference mref;
FirebaseDatabase firebaseDatabase;
String a;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.recycler_view);
Log.d("opx", String.valueOf(mref));
recview=(RecyclerView)findViewById(R.id.recview);
mref= FirebaseDatabase.getInstance().getReference().child("PARCARE");
mref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
String name=snapshot.child("LOC").getValue().toString();
a=name;
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
recview.setLayoutManager(new LinearLayoutManager(this));
Query query = FirebaseDatabase.getInstance()
.getReference().child("Parcare2").child("status");
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
String name=snapshot.getValue().toString();
a=name;
Log.d("pore",name);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
FirebaseRecyclerOptions<Model_parcare> options =
new FirebaseRecyclerOptions.Builder<Model_parcare>()
.setQuery(query, Model_parcare.class)
.build();
Log.d("pte",query.toString());
adapter_parcare=new Adapter_parcare(options);
recview.setAdapter(adapter_parcare);
}
@Override
protected void onStart() {
super.onStart();
adapter_parcare.startListening();
}
@Override
protected void onStop() {
super.onStop();
adapter_parcare.stopListening();
}
}
RecyclerView 适配器:
public class Adapter_parcare extends FirebaseRecyclerAdapter<Model_parcare,Adapter_parcare.myviewholder>{
/**
* Initialize a {@link RecyclerView.Adapter} that listens to a Firebase query. See
* {@link FirebaseRecyclerOptions} for configuration options.
*
* @param options
*/
public Adapter_parcare(@NonNull FirebaseRecyclerOptions<Model_parcare> options) {
super(options);
}
@Override
protected void onBindViewHolder(@NonNull myviewholder holder, int position, @NonNull Model_parcare model) {
holder.textView.setText(model.getStare());
Log.d("wes",holder.textView.toString());
}
@NonNull
@Override
public myviewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_parcare,parent,false);
return new myviewholder(view);
}
class myviewholder extends RecyclerView.ViewHolder{
TextView textView;
public myviewholder(@NonNull View itemView) {
super(itemView);
textView=itemView.findViewById(R.id.stare_loc);
Log.d("lkj",textView.toString());
}
} }
型号class:
public class Model_parcare {
public String stare;
Model_parcare(){
}
public Model_parcare(String stare) {
this.stare = stare;
}
public String getStare() {
return stare;
}
} 我的 xml 数据存储位置:
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView 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"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/stare_loc"
android:layout_width="120dp"
android:layout_height="53dp"
android:text="Stare"
android:textColor="#FFE933"
android:textSize="30dp" />
</LinearLayout>
</androidx.cardview.widget.CardView>
和 recyvlerview 的 xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
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:background="#FFFFFF"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recview"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@color/black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
我的 Firebase 看起来像这样:
其次:/Parcare2/status
下有一个值,但您试图在回收站视图中显示它,该视图旨在显示项目列表。 FirebaseRecyclerAdapter
用于处理节点列表,而不是此处的单个值。
让它工作的一个简单方法是:
Query query = FirebaseDatabase.getInstance().getReference("Parcare2");
FirebaseRecyclerOptions<Model_parcare> options =
new FirebaseRecyclerOptions.Builder<String>()
.setQuery(query, new SnapshotParser<String>() {
@NonNull
@Override
public String parseSnapshot(@NonNull DataSnapshot snapshot) {
return snapshot.getValue(String.class);
}
}))
.build();
adapter_parcare=new FirebaseRecyclerAdapter(options);
recview.setAdapter(adapter_parcare);
使用此代码,适配器将显示 Parcare2
下每个 属性 的值。因此,对于问题中的 JSON,它只会显示一项“ocupat”,但您可以添加更多属性,它们也会显示出来。