【问题标题】:My firebase RecyclerView doesnt show anything after added textwatcher in android studio在 android studio 中添加 textwatcher 后,我的 firebase RecyclerView 不显示任何内容
【发布时间】:2020-10-30 02:19:54
【问题描述】:

我想要的实际上是一个搜索文本字段和一个基于搜索文本字段中文本的回收视图和显示适配器。下面的链接是我参考的代码。 How to implement firebase recycler using TextWatcher?

绑定视图

@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)

【问题讨论】:

    标签: java android firebase android-recyclerview textwatcher


    【解决方案1】:

    您想通过setOnQueryTextListener()OnQueryTextListener 添加到您的SearchView,每次输入字符串更改时都会调用onQueryTextChange

    【讨论】:

    • 您好,感谢您的帮助,在您告诉我解决方案后,我尝试在 onCreate 下创建 onQueryTextListener,让我编辑上面的代码以明确我所做的更改
    • 但是我删除后就没有结果了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多