Java 从FirestoreRecyclerView向recyclerview添加多个项目
我将我的应用程序连接到Firestore,我有一个名为timey的字符串,该字符串是一个日期,它被拾取(与方式无关),并与Firestore文档中的字符串timey进行比较 我成功地使应用程序将Firestore输出显示为Java 从FirestoreRecyclerView向recyclerview添加多个项目,java,android,firebase,android-recyclerview,google-cloud-firestore,Java,Android,Firebase,Android Recyclerview,Google Cloud Firestore,我将我的应用程序连接到Firestore,我有一个名为timey的字符串,该字符串是一个日期,它被拾取(与方式无关),并与Firestore文档中的字符串timey进行比较 我成功地使应用程序将Firestore输出显示为文本视图,但如果我有两个日期相同的条目,它总是选择一个,而忘记另一个。因此,我决定尝试使用FirebaseRecyclerAdapter显示数据,该适配器通常显示“单一日期条目”,但只要我选择一个包含两个条目的日期,应用程序就会崩溃。这是源代码,你知道如何让RecyclerVi
文本视图
,但如果我有两个日期相同的条目,它总是选择一个,而忘记另一个。因此,我决定尝试使用FirebaseRecyclerAdapter
显示数据,该适配器通常显示“单一日期条目”,但只要我选择一个包含两个条目的日期,应用程序就会崩溃。这是源代码,你知道如何让RecyclerView显示几十个相同日期的条目,并将它们作为单独的条目放在一个RecyclerView中吗
。。。
passedArg是从不同布局传递的日期
static String passedArg;
RecyclerView reserveList;
private static final CollectionReference reservationCollection = FirebaseFirestore.getInstance().collection("reservations");
private static Query reservationsQuery;
private FirebaseFirestore db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_page);
textView = findViewById(R.id.textView);
textView2 = findViewById(R.id.textView2);
textView3 = findViewById(R.id.textView3);
passedArg = getIntent().getExtras().getString(MESSAGE_KEY);
textView.setText(passedArg);
reservationsQuery = reservationCollection.whereEqualTo("timey", passedArg);
RecyclerView reserveList = (RecyclerView) findViewById(R.id.reserveList);
reserveList.setLayoutManager(new LinearLayoutManager (this));
FirestoreRecyclerOptions<Reservations> options =
new FirestoreRecyclerOptions.Builder<Reservations>()
.setQuery(reservationsQuery, Reservations.class)
.setLifecycleOwner(this)
.build();
FirestoreRecyclerAdapter<Reservations, ReservationsHolder> adapter = new FirestoreRecyclerAdapter<Reservations, ReservationsHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull ReservationsHolder holder, int position, @NonNull Reservations model) {
holder.setName(model.getName());
holder.setTime(model.getTime());
holder.setCountry(model.getCountry());
}
@NonNull
@Override
public ReservationsHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new ReservationsHolder(LayoutInflater.from(parent.getContext())
.inflate(R.layout.reservations, parent, false));
}
};
reserveList.setAdapter(adapter);
您将收到以下错误:
java.lang.RuntimeException: Could not deserialize object. Failed to convert value of type java.util.Date to String (found in field 'time')
因为在Firestore数据库中,您有一个名为time
的属性,它的类型是Date
,而不是String。因此,要解决这个问题,请参阅以及如何正确地解决它
如果您感兴趣,是如何使用FirestoreRecyclerAdapter
从云Firestore数据库中正确检索数据并将其显示在RecyclerView
中
java.lang.RuntimeException: Could not deserialize object. Failed to convert value of type java.util.Date to String (found in field 'time')