- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的应用程序中有一个 FloatingSearchView
,用于对我的 Firestore 数据库执行一些查询。当我检查每个查询的大小时,结果符合预期,但我的 View 没有随结果更新。我不明白这是查询还是我处理不同适配器的方式。
对于每个查询,我都有一个 FirestoreRecyclerAdapter
。我不明白怎么了。感谢您的帮助!
floatingSearchView.setOnSearchListener(new
FloatingSearchView.OnSearchListener() {
@Override
public void onSuggestionClicked(SearchSuggestion
searchSuggestion) {
mLastQuery = searchSuggestion.getBody();
com.google.firebase.firestore.Query qSuggestion =
db
.collection("article")
.whereEqualTo("category", category_key)
.whereEqualTo("type", mLastQuery);
qSuggestion
.get()
.addOnSuccessListener(new
OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot
documentSnapshots) {
int size = documentSnapshots
.getDocuments()
.size();
Toast.makeText(Blog.this, "size " + size,
Toast.LENGTH_LONG).show();
}
});
FirestoreRecyclerOptions<Blog_model> opt = new FirestoreRecyclerOptions.Builder<Blog_model>()
.setQuery(qSuggestion, Blog_model.class)
.build();
Log.d("option", opt.getSnapshots().toString());
suggestionAdapter = new FirestoreRecyclerAdapter<Blog_model, Blog.BlogViewHolder>(opt) {
@Override
public void onBindViewHolder(@NonNull Blog.BlogViewHolder holder, int position, @NonNull final Blog_model model) {
holder.setTitle(model.getTitle());
holder.setDesc(model.getDesc());
holder.setImage(getApplicationContext(), model.getPicture());
final String post_key = getSnapshots().getSnapshot(position).getId();
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Ordinary Intent for launching a new activity
final Intent intent = new Intent(Blog.this, BlogDetails.class);
intent.putExtra("article_id", post_key);
intent.putExtra("category_key", category_key);
intent.putExtra("image", model.getPicture());
intent.putExtra("title", model.getTitle());
startActivity(intent);
}
});
}
@Override
public Blog.BlogViewHolder onCreateViewHolder(ViewGroup group, int i) {
// Create a new instance of the ViewHolder, in this case we are using a custom
// layout called R.layout.message for each item
View view = LayoutInflater.from(group.getContext())
.inflate(R.layout.blog_row, group, false);
return new Blog.BlogViewHolder(view);
}
};
floatingSearchView.clearSearchFocus();
mBlogList.setAdapter(suggestionAdapter);
}
@Override
public void onSearchAction(String currentQuery) {
mLastQuery = currentQuery;
// query to firebase
com.google.firebase.firestore.Query qSuggestion =
db
.collection("article")
.whereEqualTo("keyword."+mLastQuery, true);
FirestoreRecyclerOptions<Blog_model> options1 = new FirestoreRecyclerOptions.Builder<Blog_model>()
.setQuery(qSuggestion, Blog_model.class)
.build();
Log.d("option", options1.getSnapshots().toString());
searchAdapter = new FirestoreRecyclerAdapter<Blog_model, Blog.BlogViewHolder>(options1) {
@Override
public void onBindViewHolder(@NonNull Blog.BlogViewHolder holder, int position, @NonNull final Blog_model model) {
holder.setTitle(model.getTitle());
holder.setDesc(model.getDesc());
holder.setImage(getApplicationContext(), model.getPicture());
final String post_key = getSnapshots().getSnapshot(position).getId();
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Toast.makeText(Blog.this, "title", Toast.LENGTH_LONG).show();
// Ordinary Intent for launching a new activity
final Intent intent = new Intent(Blog.this, BlogDetails.class);
intent.putExtra("article_id", post_key);
intent.putExtra("category_key", category_key);
intent.putExtra("image", model.getPicture());
intent.putExtra("title", model.getTitle());
startActivity(intent);
}
});
}
@Override
public Blog.BlogViewHolder onCreateViewHolder(ViewGroup group, int i) {
// Create a new instance of the ViewHolder, in this case we are using a custom
// layout called R.layout.message for each item
View view = LayoutInflater.from(group.getContext())
.inflate(R.layout.blog_row, group, false);
return new Blog.BlogViewHolder(view);
}
};
mBlogList.setAdapter(searchAdapter);
}
});
@Override
public void onStart() {
super.onStart();
adapter.startListening();
if(suggestionAdapter != null){
suggestionAdapter.startListening();
}
if(searchAdapter != null){
searchAdapter.startListening();
}
}
@Override
public void onStop() {
super.onStop();
adapter.stopListening();
if(suggestionAdapter != null){
suggestionAdapter.stopListening();
}
if(searchAdapter != null){
searchAdapter.stopListening();
}
}
最佳答案
您正在使用两个 FirestoreRecyclerAdapter
对象,这是正确的,但您代码中的问题是您没有在正确的位置监听第二个适配器的变化。要解决这个问题,请在 onSearchAction
方法中添加:
searchAdapter.startListening();
在您创建适配器对象之后。这意味着对于您在 FloatingSearchView
中键入的每个字符,您都会创建一个新的适配器并使用来自数据库的结果填充它。如果您在 onStart
方法中开始收听,它对您根本没有帮助。
关于java - FirestoreRecyclerAdapter 在新的 firestore 查询后未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49584886/
我正在更新我的应用程序以使用 Firebase 的 Firestore 数据库。我正在努力让应用程序显示从数据库中检索到的数据。数据检索正常,但未显示。通过设置断点,我已经确定 ViewHolder
我正在关注 this tutorial ,据此,当我启动我的应用程序时,我应该能够看到已添加到 Firestore 的项目(文档)。但这正在发生 onCreateViewHolder仅当我点击 tex
我想知道如何才能发现 FirestoreRecyclerAdapter 仅是空的。通过下面的代码,我可以发现它是否有一个或多个实例,但它不会准确地告诉我它什么时候里面没有对象。验证 if(adapte
FirebaseUI-Android 在使用 FirebaseRecyclerAdapter 时提供索引查询。这在访问 Firebase Realtime DB 数据时效果很好,如下所述:https:
我正在开发一个 Android 应用程序,我需要对我的 Firestore 数据库进行复杂的查询并创建一个 FirestoreRecyclerAdapter。要创建适配器,我需要一个接受输入整个查询的
我有一个如下所示的查询: Query first = ref.orderBy("name", Query.Direction.ASCENDING).limit(10); 这就是我将数据显示到我的 Re
我的应用程序中有一个 FloatingSearchView,用于对我的 Firestore 数据库执行一些查询。当我检查每个查询的大小时,结果符合预期,但我的 View 没有随结果更新。我不明白这是查
我可以查询 Firestore 并手动获取 ID,但我使用的是 FirestoreRecyclerAdapter,因为它附带了大量开箱即用的额外工作。所以,如果我有这样的代码: FirebaseFir
从 Firestore 的 Firebase-UI RecyclerView 中删除项目的正确方法是什么? 这是我的方法: new ItemTouchHelper(new ItemTouchHelpe
使用新的 firestore 如何从适配器获取 key (文档 ID)? 使用 Firebase 数据库,我们可以使用 String key = this.getRef(position).getKe
我正在尝试 FirestoreRecyclerAdapter,并且数据正在加载并且可以在调试器中正常看到。但是,当我尝试将 TextView 设置为等于某些数据时,它会崩溃,因为 TextView 为
我正在使用 RecyclerView 来显示来自 Firestore 数据库的一些数据。出于显而易见的原因,我将 FirestoreRecyclerAdapter 用作适配器。我在我的 Recycle
我有两个问题: Query firstQuery = ref.orderBy("name", Query.Direction.ASCENDING).limit(10); getData(firstQu
我的 android 项目有两个模型 - Track 和 Artist。 Track用于获取Track相关信息,Artist用于获取Artist相关详情。 以下是每个模型的示例代码: Track.cl
这个问题在这里已经有了答案: How to paginate Firestore with Android? (3 个答案) 关闭 3 年前。 我已经在 https://firebase.googl
我正在使用 Firestore 来存储“图表”集合。我需要查询集合以获取所有具有登录用户 ID 的图表。我有一个显示适当图表的 FirebaseRecyclerAdapter(查询通过 Firesto
我想在列表中显示服务器时间戳(实际上是日期)。 FirestoreRecyclerAdapter 由此类提供(仅保留与时间戳相关的方法): public class Lista { priva
在我的 Android 应用程序中,我使用 firebase-UI 中的 FirestoreRecyclerAdapter它绑定(bind)Query和Model。当应用程序离线时,我需要它不显示任何
firestore 回收器适配器 没有获取任何数据,我发现了上述错误。我搜索过,但没有人给出明确的答案。 我使用 EditText 和图像按钮进行搜索。 我正在使用身份验证,因此我不会这样做,这是否会
我是一名优秀的程序员,十分优秀!