我尝试使用 FirebaseUI-Android 库来简单地在回收器视图中显示数据集。
由于 Push() 方法,数据存储在 Firebase 中的列表中。
当我获取数据时,我先获取最旧的数据,而我的要求是最年轻的先。所以我需要一个相反的顺序。
有没有办法用 FirebaseUI 本身来做到这一点?
对于 Firebase Core,似乎只有 2 种可能的方法是(按降序显示帖子):
我不喜欢向用户显示空的 RecyclerView。我知道在 recyclerview 中有 getItemCount 方法,但我认为 reyclerview 可能是在单独的线程上执行的。这是因为每当我尝试调用 adapter.getitemcount 时,即使我的 recyclerview 具有来自 firebase 的值,它也会快速给出计数 0。所以我想也许直到值来之前 getItemCount 方法被执行并返回 0 或者它可能在单独的线程上执行。但是无论哪种方式,即使我的 recyclerview 具有来自 firebase 的值,我也会得到 0。所以我想检查我的 firebase recycler 是否为空,然后相应地更改视图,因为我不喜欢显示用户和空的 recyclerview(一个空的活动)。请建议我应该如何检查它?顺便说一句,这是我的简单 firebase 适配器代码:
allFriendsAdapter = new FirebaseRecyclerAdapter<FriendsModel, ViewHolder>(friendsOptions) {
@Override
protected void onBindViewHolder(@NonNull final ViewHolder holder, final int position, @NonNull FriendsModel model) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
if(allFriendsAdapter .getItemcount==0){ //this is always returning 0 even when my recyclerview has values
}
Run Code Online (Sandbox Code Playgroud) 我正在使用FirebaseListAdapter,我需要显示ProgressDialog,但我不知道如何知道它何时完成加载.
public class TabFragment1 extends ListFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.tab_fragment_1, container, false);
ListView eventosView = (ListView) rootView.findViewById(android.R.id.list);
Firebase ref = new Firebase(//myappurl);
Firebase usersRef = new Firebase(//myappurl/eventos/users);
Singleton singletonUser = Singleton.getInstance();
setUser(singletonUser);
Firebase ref = new Firebase(//myappurl/eventos);
FirebaseListAdapter<Evento> mAdapter = new FirebaseListAdapter<Evento>(getActivity(), Evento.class, R.layout.event_row, ref) {
@Override
protected void populateView(View view, Evento evento) {
((TextView)view.findViewById(R.id.eventTitle)).setText(evento.getNome());
((TextView)view.findViewById(R.id.eventPlace)).setText(evento.getLocal());
}
};
setListAdapter(mAdapter);
return mAdapter;
return rootView;
}
private void setUser(Singleton singletonUser){
singletonUser.getToken(); …Run Code Online (Sandbox Code Playgroud) 我正在我的应用程序中实现Firebase Recyclerview UI.我已经实现了一个recyclerview适配器,它向我显示以下异常.以下是我的适配器代码:
FirebaseRecyclerAdapter<DataSnapshot, MyHolder> recyclerAdapter = new FirebaseRecyclerAdapter<DataSnapshot, MyHolder>(
DataSnapshot.class,
R.layout.row_slots,
MyHolder.class,
databaseReference.child("slots").child(uid).child(dayOfWeek).child("time")
) {
@Override
protected void populateViewHolder(MyHolder viewHolder, DataSnapshot model, int position) {
System.out.println("Key : "+model.getKey());
}
};
Run Code Online (Sandbox Code Playgroud)
如何使用FirebaseRecyclerAdapter获取快照值?
我在firebase项目控制台中为debug和release keystore添加了SHA1.我还在应用中通过google-services.json文件进行了更新.Debug apk工作正常并访问firebase的所有实时数据库但是当我构建版本apk时,我在访问Firebase数据库时遇到以下异常.
07-29 08:48:04.527 20997-20997/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.entrance.nepal, PID: 20997
java.lang.RuntimeException: java.lang.IllegalAccessException: java.lang.Class<com.tenhaff.uniingress.fragments.UserListFragment$UserViewHolder> is not accessible from java.lang.Class<com.firebase.ui.database.FirebaseRecyclerAdapter>
at com.firebase.ui.database.FirebaseRecyclerAdapter.onCreateViewHolder(FirebaseRecyclerAdapter.java:171)
at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:5779)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5003)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4913)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2029)
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1414)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1377)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:578)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3260)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3069)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3518)
Run Code Online (Sandbox Code Playgroud) 这是一个愚蠢的问题,但我找不到我做错了什么.
我正在使用FirebaseRecyclerAdapter来填充recyclerView,但是项目会出现意想不到的空间.

片段类:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_tags, container, false);
mProgressBar = (ProgressBar)view.findViewById(R.id.progressBar);
mTagsRecyclerView = (RecyclerView) view.findViewById(R.id.tagsRecyclerView);
mLinearLayoutManager = new LinearLayoutManager(getContext());
mFirebaseDatabaseReference = FirebaseDatabase.getInstance().getReference();
mFirebaseAdapter = new FirebaseRecyclerAdapter<Tags, TagsViewHolder>(
Tags.class,
R.layout.item_message,
TagsViewHolder.class,
mFirebaseDatabaseReference.child("tags")) {
@Override
protected void populateViewHolder(TagsViewHolder viewHolder, Tags tags, int position) {
mProgressBar.setVisibility(ProgressBar.INVISIBLE);
viewHolder.tagTextView.setText(tags.getTagname());
viewHolder.usrTextView.setText(tags.getUserid());
}
};
mFirebaseAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
@Override
public void onItemRangeInserted(int positionStart, int itemCount) {
super.onItemRangeInserted(positionStart, itemCount);
}
});
mTagsRecyclerView.setLayoutManager(mLinearLayoutManager);
mTagsRecyclerView.setAdapter(mFirebaseAdapter);
mTagsRecyclerView.addOnItemTouchListener(new RecyclerViewItemClickListener(getContext(),
new RecyclerViewItemClickListener.OnItemClickListener() { …Run Code Online (Sandbox Code Playgroud) 我面临这个错误:
Caused by: java.lang.IllegalStateException: This app has been built with an incorrect configuration. Please configure your build for VectorDrawableCompat.
Run Code Online (Sandbox Code Playgroud)
但是添加Firebase UI依赖项后出现此错误:
compile 'com.firebaseui:firebase-ui:0.4.3'
Run Code Online (Sandbox Code Playgroud)
我已经看过这个和这篇文章,但似乎没有什么对我有用,即使我的项目中没有矢量绘图,但我想知道为什么它给我这个错误消息。下面是我的日志:
10-03 04:58:29.699 1256-1270/system_process E/WindowManager: Starting window AppWindowToken{b13967c8 token=Token{b1990890 ActivityRecord{b1778df8 u0 pixsor.app.huzykamz.pixoradmin/.MainActivity t8}}} timed out
10-03 05:03:21.954 1256-1326/system_process A/ActivityManager: Service ServiceRecord{b199ac38 u0 pixsor.app.huzykamz.pixoradmin/com.google.android.gms.measurement.AppMeasurementService} in process ProcessRecord{b12b8bd0 21551:pixsor.app.huzykamz.pixoradmin/u0a62} not same as in map: null
10-03 05:06:42.187 25698-25698/? E/memtrack: Couldn't load memtrack module (No such file or directory)
10-03 05:06:42.187 25698-25698/? …Run Code Online (Sandbox Code Playgroud) 我使用计数器值来计算我的ListView物品.但是当我向下滚动并向后滚动时,它仍会计算代码中的值并更改值.
这个值应该是1和2而不是7和8 ......

这是我的代码
DatabaseReference myQuery = databaseReference.child("Tests").child(PIN).child("Questions");
FirebaseListAdapter<QuizStatistic_list> adapter = new FirebaseListAdapter<QuizStatistic_list>(this, QuizStatistic_list.class, R.layout.list_quiz_statistic, myQuery) {
@Override
protected void populateView(View v, QuizStatistic_list model, int position) {
TextView quizQuestion, questionNumber, ansA, ansB, ansC, ansD;
quizQuestion = (TextView) v.findViewById(R.id.textView_quizQuestion);
questionNumber = (TextView) v.findViewById(R.id.textView_questionNumber);
ansA = (TextView) v.findViewById(R.id.textView_ansA);
ansB = (TextView) v.findViewById(R.id.textView_ansB);
ansC = (TextView) v.findViewById(R.id.textView_ansC);
ansD = (TextView) v.findViewById(R.id.textView_ansD);
quizQuestion.setText(model.getQuestion());
questionNumber.setText(counter.toString());
ansA.setText("A: " + model.getAnswerA());
ansB.setText("B: " + model.getAnswerB());
ansC.setText("C: " + model.getAnswerC());
ansD.setText("D: " + model.getAnswerD());
//This value …Run Code Online (Sandbox Code Playgroud) android listview firebase firebase-realtime-database firebaseui
我的问题是如何使用firebase list或recyclerview ui过滤algolia的firebase数据
有关通过电话号码进行身份验证的Firebase身份验证的问题。
我想知道是否可以将“电话提供商”链接为Google Auth Provider。在文档中没有明确提及它。
让我挠头的是-“链接多个身份验证提供程序”文档讨论要开始与要链接到现有提供程序(谷歌提供程序)的新提供程序(电话提供程序)进行身份验证,但随后会停止通话FirebaseAuth.signInWithXXX。
因此,从理论上讲,它将像:
FirebaseAuth.signInWithXXX,我们可以致电而不是在此处致电FirebaseUser.linkWithCredential(PhoneAuthCredential)。因此,我想知道是否在没有使用明确登录的情况下认为电话号码验证已完成PhoneAuthCredential?