java - 在 android studio 中添加 textwatcher 后,我的 firebase RecyclerView 不显示任何内容
问题描述
我想要的实际上是一个搜索文本字段和一个循环视图和显示适配器,它基于搜索文本字段中的文本。下面的链接是我参考的代码。 如何使用 TextWatcher 实现 firebase 回收器?
绑定视图
@BindView(R.id.searchFood) SearchView mSearchFood;
@BindView(R.id.isharedfood_recyclerview) RecyclerView mISharedFoodRecyclerView;
iFoodSharedActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ifoodshared);
ButterKnife.bind(this);
setSupportActionBar(mToolbar);
getSupportActionBar().setTitle("iFoodShared");
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_baseline_keyboard_backspace_24);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
mAuth = FirebaseAuth.getInstance();
mFirestore = FirebaseFirestore.getInstance();
itemRef = mFirestore.collection("FoodShare");
user = mAuth.getCurrentUser().getDisplayName();
mSearchFood.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}
@Override
public boolean onQueryTextChange(String s) {
s = mSearchFood.getQuery().toString();
setUpRecyclerView (s);
return false;
}
});
}
private void setUpRecyclerView(final String s){
Query query = itemRef
.orderBy("timeStamp", Query.Direction.DESCENDING)
.whereEqualTo("sharerName", user)
.startAt(s.toUpperCase()).endAt(s + "\uf8ff");
FirestoreRecyclerOptions<FoodModel> options = new FirestoreRecyclerOptions.Builder<FoodModel>()
.setQuery(query, FoodModel.class)
.build();
iFoodSharedAdapter = new iFoodSharedAdapter(options);
RecyclerView recyclerView = findViewById(R.id.isharedfood_recyclerview);
recyclerView.setLayoutManager(new GridLayoutManager(this, 2));
recyclerView.setAdapter(iFoodSharedAdapter);
}
@Override
public void onStart() {
super.onStart();
iFoodSharedAdapter.startListening();
}
public void onStop() {
super.onStop();
iFoodSharedAdapter.stopListening();
}
错误显示
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.fyp.fypfoodbank, PID: 29614
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.fyp.fypfoodbank.Adapters.iFoodSharedAdapter.startListening()' on a null object reference
at com.fyp.fypfoodbank.Activities.iFoodSharedActivity.onStart(iFoodSharedActivity.java:125)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1392)
at android.app.Activity.performStart(Activity.java:7260)
at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3009)
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180)
at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1840)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:6878)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:876)
解决方案
您想通过setOnQueryTextListener()将OnQueryTextListener添加到 SearchView中,每次输入字符串更改时都会调用onQueryTextChange 。
推荐阅读
- arrays - 使用散列注入数组时出现“nil:NilClass 的未定义方法 `[]='”错误
- ansible - 无法从 /etc/ansible 的 group_vars 文件加载和获取变量
- java - 活动加载一次又一次
- php - errorexception mkdir(): Permission Denied Codeigniter 4
- permissions - Arango 从 3.3 更新到 3.7
- google-apps-script - 如何从 Google Apps 中的 formatString 将值放入多种 % 格式?
- apache-kafka - spring boot kafka消费者进程事件21次
- plot - 使用 pyvista 小部件在 spyder 中进行交互式绘图
- java - 如何获取在类中声明的自定义注释列表
- c++ - Windows GUI:我可以从 C++ 访问“现代 ui”吗?