如何在Firebase RecyclerView适配器中实现SetOnItemClickListener事件?我使用文档示例,聊天应用程序:
private FirebaseRecyclerViewAdapter mAdapter;
RecyclerView recycler = (RecyclerView) findViewById(R.id.messages_recycler);
recycler.setHasFixedSize(true);
recycler.setLayoutManager(new LinearLayoutManager(this));
mAdapter = new FirebaseRecyclerViewAdapter<ChatMessage, ChatMessageViewHolder>(ChatMessage.class, android.R.layout.two_line_list_item, ChatMessageViewHolder.class, mRef) {
@Override
public void populateViewHolder(ChatMessageViewHolder chatMessageViewHolder, ChatMessage chatMessage) {
chatMessageViewHolder.nameText.setText(chatMessage.getName());
chatMessageViewHolder.messageText.setText(chatMessage.getMessage());
}
};
recycler.setAdapter(mAdapter);
Run Code Online (Sandbox Code Playgroud) 我正在使用FirebaseRecyclerAdapter
Firebase-UI.列表工作正常,但我无法在SearchView中实现过滤器.
我的用户数据库: Firebase用户
private DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("users");
private RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
recyclerView = (RecyclerView) findViewById(R.id.rv);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setHasFixedSize(true);
UserAdapter userAdapter = new UserAdapter(
User.class,
R.layout.user,
UserAdapter.UserViewHolder.class,
reference
);
recyclerView.setAdapter(userAdapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_activity, menu);
MenuItem item = menu.findItem(R.id.search);
searchView = (SearchView) MenuItemCompat.getActionView(item);
searchView.setOnQueryTextListener(this);
}
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
// ???
return true;
}
Run Code Online (Sandbox Code Playgroud)
编辑
我在onQueryTextSubmit上尝试了这个代码,过滤器工作但行为奇怪.
UserAdapter userAdapter …
Run Code Online (Sandbox Code Playgroud) 我尝试了几乎所有这些答案都有大量的重复答案,但我仍然无法使用Glide的Firebase存储图像.
首先我使用的是文档
FirebaseStorage storage = FirebaseStorage.getInstance();
StorageReference storageRef = storage.getReference();
StorageReference pathReference = storageRef.child("sorular/1.jpg");
// ImageView in your Activity
ImageView imageView = rootView.findViewById(R.id.imageView);
// Load the image using Glide
Glide.with(this /* context */)
.using(new FirebaseImageLoader()) // Cannot resolve method 'using
.load(pathReference)
.into(imageView);
Run Code Online (Sandbox Code Playgroud)
如果我清理Glide的.using部分,logcat就会出现这个错误:
E/GlideExecutor:请求抛出未捕获的throwable com.bumptech.glide.Registry $ NoModelLoaderAvailableException:无法在com.bumptech.glide中找到模型的任何ModelLoaders:gs:
//123...appspot.com/sorular/1.jpg. Registry.getModelLoaders(Registry.java:227)
位于com.bumptech.glide.load.engine.DecodeHelper.getLoadData(DecodeHelper.java:179)的com.bumptech.glide.load.engine.DecodeHelper.getCacheKeys(DecodeHelper.java: 197)com.bumptech.glide.load.engine.ResourceCacheGenerator.startNext(ResourceCacheGenerator.java:41)at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:282)at com.bumptech.glide .load.engine.DecodeJob.runWrapped(DecodeJob.java:249)at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:222)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java) :1133)java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:607)at java.lang.Thread.run(Thread.java:761)
at com.bumptech.glide.load.engine.executor. GlideExe cutor $ DefaultThreadFactory $ 1.run(GlideExecutor.java:347)
那么如何以最好的方式在我的Android应用程序中使用firebase存储图像呢?
这也是我的构建gradle依赖项:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation …
Run Code Online (Sandbox Code Playgroud) android firebase android-gradle-plugin android-glide firebaseui
我使用firebase auth UI
(FirebaseUI-Android的 Android应用中,用户可以通过个人注册)email
,Facebook
,number
和Gmail
帐户.我的问题是,当用户使用他的个人电子邮件ID登录时,我需要获得电子邮件验证.
List<AuthUI.IdpConfig> providers = Arrays.asList(
new AuthUI.IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build(),
new AuthUI.IdpConfig.Builder(AuthUI.PHONE_VERIFICATION_PROVIDER).build(),
new AuthUI.IdpConfig.Builder(AuthUI.FACEBOOK_PROVIDER).build(),
new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER).build());
startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setIsSmartLockEnabled(true)
.setTheme(R.style.GreenTheme)
.setTosUrl("https://termsfeed.com/blog/terms-conditions-mobile-apps/")
.setPrivacyPolicyUrl("https://superapp.example.com/privacy-policy.html")
.setAvailableProviders(providers)
.build(),
RC_SIGN_IN);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// RC_SIGN_IN is the request code you passed into startActivityForResult(...) when starting the sign in flow.
if (requestCode == RC_SIGN_IN) {
IdpResponse response = IdpResponse.fromResultIntent(data);
// Successfully signed in
if …
Run Code Online (Sandbox Code Playgroud) 我在我的项目中导入了2个库(在gradle文件中):
...
/* Firebase UI */
compile 'com.firebaseui:firebase-ui:0.4.0'
/* Facebook login */
compile 'com.facebook.android:facebook-android-sdk:4.13.0'
Run Code Online (Sandbox Code Playgroud)
但在构建我的项目时,我有以下错误:
D:\ Android\Projects\quoter\app\src\main\AndroidManifest.xml:68:13-58错误:属性活动#com.facebook.FacebookActivity@theme value =(@ style/FirebaseUI.Translucent)来自[com. firebaseui:firebase-ui-auth:0.4.0] AndroidManifest.xml:68:13-58也出现在[com.facebook.android:facebook-android-sdk:4.13.0] AndroidManifest.xml:32:13- 72 value =(@ android:style/Theme.Translucent.NoTitleBar).建议:在AndroidManifest.xml:64:9-68:61中添加'tools:replace ="android:theme"'来覆盖.
我发现扩展的jar包含Facebook sdk和Firebase UI库的清单文件,但我不确定是否更改它们是解决此错误的正确方法,因为每次我清理并重新构建我的项目时,新的清单也是产生...
我该如何解决这个错误?在我看来,两个图书馆之间的不兼容......
注意:在我的应用程序中添加以下内容
<application
tools:node="replace"
Run Code Online (Sandbox Code Playgroud)
解决这个问题,但启动应用程序是不可能的,因为Firebase未正确初始化(请参阅/sf/answers/2664219071/)
android manifest facebook-sdk-4.0 firebase-authentication firebaseui
我的代码在我的populateViewHolder
:
public void populateViewHolder(final CampaignHolder viewHolder, final Campaign campaign, final int position) {
String k = getRef(position).getKey();
ref.child(k).child("users").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (!dataSnapshot.hasChild(getUid())) {
//Something...
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
//...Populating the viewholder...
Run Code Online (Sandbox Code Playgroud)
我想删除该项,如果!dataSnapshot.hasChild(getUid())
是true
,否则只是继续正常填充ViewHolder.请注意,我不想从数据库中删除该项目,我只想让它从中删除FirebaseRecyclerAdapter
.有什么方法可以做到这一点?
编辑:我仍然在寻找这个问题的解决方案,因为它还没有修复.我的解决方案非常气馁,非常糟糕的做法,我已经重新考虑过自己使用它.
是否可以在Android上使用我自己的Firebase UI Auth 布局和按钮?
我基本上想要实现自己选择身份提供者(google,facebook等)的屏幕并从我的点击监听器开始相应的流程(例如使用Butterknife):
@OnClick(R.id.login_btn_signInGoogle)
public void signInGoogle(View view) {
// Start google sign in flow <--- This is what I do not know how to do it
}
@OnClick(R.id.login_btn_signInFacebook)
public void signInFacebook(View view) {
// Start facebook sign in flow <--- This is what I do not know how to do it
}
Run Code Online (Sandbox Code Playgroud)
我知道firebase提供了自定义屏幕/主题的可能性,但对我的情况来说还不够.
在最坏的情况下,我将不得不使用标准的firebase sdk方法来实现它.
我的Android Studio项目最近停止了正确构建.我不知道是什么导致了这个问题.
3.1.0-alpha2
和构建工具版本正确构建26.0.2
.我尝试了很多我想我实际上已将所有内容更改回我之前成功使用的设置,而我的其他具有类似设置的项目构建正常.
Error:java.lang.RuntimeException: com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: Error while executing java process with main class com.google.devtools.build.android.desugar.Desugar with arguments {@...\app\build\intermediates\tmp\desugar_args165654356027684238}
Error:com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: Error while executing java process with main class com.google.devtools.build.android.desugar.Desugar with arguments {@...\app\build\intermediates\tmp\desugar_args165654356027684238}
Error:java.lang.RuntimeException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: Error while executing java process with …
Run Code Online (Sandbox Code Playgroud) 我正在尝试首先使用 登录用户Email and Password
,然后在它之后,我也想要user's Phone Number
。所以我所做的我首先使用他EmailAndPasswordAuth
的一个活动(自定义登录)对用户进行了签名,然后,我在下一个活动中通过他的电话号码登录了用户。但由于它成为同一部手机上的两个帐户,我想将这些谷歌和手机凭据合并为一个帐户。
然后我尝试关注https://firebase.google.com/docs/auth/android/account-linking,但它给了我例外。
com.google.firebase.FirebaseException:用户已经链接到给定的提供者。
PhoneAuthActivity.java
String email = intent.getStringExtra("email");
String password = intent.getStringExtra("pass");
Toast.makeText(this, "Email" + email + "Password" + password, Toast.LENGTH_SHORT).show();// this is working
emailCredential = EmailAuthProvider.getCredential(email, password);
mPhoneNumberField = findViewById(R.id.field_phone_number);
mVerificationField = findViewById(R.id.field_verification_code);
mStartButton = findViewById(R.id.button_start_verification);
mVerifyButton = findViewById(R.id.button_verify_phone);
mResendButton = findViewById(R.id.button_resend);
mStartButton.setOnClickListener(this);
mVerifyButton.setOnClickListener(this);
mResendButton.setOnClickListener(this);
mAuth = FirebaseAuth.getInstance();
mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
@Override
public void onVerificationCompleted(PhoneAuthCredential credential) {
Log.d(TAG, "onVerificationCompleted:" + credential);
signInWithPhoneAuthCredential(credential);
}
@Override …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Swift 包管理器安装 FirebaseUI-iOS。我尝试过 Xcode 14.0 和 Xcode 13.4.1。我收到以下错误:
[![Xcode 14.0 的错误][2]][2] [2]:https://i.stack.imgur.com/FklqL.png
我尝试过使用“直到主要版本”(特定版本),但没有任何效果。有人有建议吗?如果我查看存储库,Package.swift 文件确实存在。我也就此提出了一个问题。https://github.com/firebase/FirebaseUI-iOS/issues/1094
TIA