我当前正在遵循一个教程,将实时位置跟踪添加到我的应用程序。自从教程的创建者使用firebase-ui-auth以来,我遇到了一些问题:1.2.0与最新版本的firebase-ui-auth相比:4.3.1。
指导教程的链接如下:https://www.youtube.com/watch?v=17hqlbkux-e< - 我目前被困在27:30
我知道FirebaseRecyclerAdapter已收到一些更改,将PropulateViewHolder更改为OnBindViewHolder&OnCreateviewHolder。
我在遵循本教程时遇到的问题是,原始代码如下:
private void updateList() {
adapter = new FirebaseRecyclerAdapter<UserRace, OnlineListViewHolder>(
UserRace.class,
R.layout.user_layout,
OnlineListViewHolder.class,
counterRef
) {
@Override
protected void populateViewHolder(OnlineListViewHolder viewHolder, UserRace model, int position) {
viewHolder.txtEmail.setText(model.getEmail());
}
};
adapter.notifyDataSetChanged();
onlineList.setAdapter(adapter);
}
版本4.3.1被写为:
private void updateList() {
adapter = new FirebaseRecyclerAdapter<UserRace, OnlineListViewHolder>(
UserRace.class,
R.layout.user_layout,
OnlineListViewHolder.class,
counterRef
) {
@Override
protected void onBindViewHolder(@NonNull OnlineListViewHolder holder, int position, @NonNull UserRace model) {
holder.txtEmail.setText(model.getEmail());
}
@NonNull
@Override
public OnlineListViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
return null;
}
};
adapter.notifyDataSetChanged();
onlineList.setAdapter(adapter);
}
我在以下几行中收到此版本的代码中的错误:
UserRace.class,
R.layout.user_layout,
OnlineListViewHolder.class,
counterRef
) {
红线将出现在括号内的值下,并指出:firebaserecycycleradapter中的firebaserecycleradapter()不能应用于:预期参数:实际参数:
使用版本1.2.0避免此错误允许该代码的此错误功能,但与我的应用程序的其他区域混乱。
我有什么办法可以在括号内包含所需的数据而不会收到错误?我试图研究这个问题,但我没有精通Java,因此我无法找到解决方案。
如果我说的话不清楚,请告诉我。
所有帮助将不胜感激。
该代码已被弃用,现在您需要使用FirebaseRecyclerOptions
来设置RecyClerview Adapter,请在此处阅读文档
https://github.com/firebase/firebaseui-android/blob/master/database/readme.md
现在,而不是这样做
adapter = new FirebaseRecyclerAdapter<UserRace, OnlineListViewHolder>(
UserRace.class,
R.layout.user_layout,
OnlineListViewHolder.class,
counterRef
)
您将需要像这样
首先,通过构建firebaseRecycleroptions
来配置适配器FirebaseRecyclerOptions<UserRace> options =
new FirebaseRecyclerOptions.Builder<UserRace>()
.setQuery(query, UserRace.class)
.build();
接下来创建FirebaseRecyclerAdapter对象。您应该已经有一个用于显示每个项目的视图持有人子类。
adapter = new FirebaseRecyclerAdapter<UserRace, OnlineListViewHolder>(options) {
@Override
public OnlineListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// Create a new instance of the ViewHolder, in this case we are using a custom
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.yourCustomLayout, parent, false);
return new OnlineListViewHolder(view);
}
@Override
protected void onBindViewHolder(OnlineListViewHolder holder, int position, UserRace model) {
// Bind the views
// ...
}
};
,最后但并非最不重要的一点是,这是一个非常重要的部分,请在onStart()
和onStop()
方法
@Override
protected void onStart() {
super.onStart();
adapter.startListening();
}
@Override
protected void onStop() {
super.onStop();
adapter.stopListening();
}
这是一个例子,您必须适合用例