微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用带有Firebase数据库的微调器过滤RecylerView

如何解决使用带有Firebase数据库的微调器过滤RecylerView

我想使用微调器的选定选项来过滤recylerView 我的微调器是从数据库中检索的。...检索部分效果很好。 当我将RecylerView代码放入Onitemselectedlisner内时,发生错误 在onstart函数pa1.startlistening()上说“空引用”。 当我将recylerView代码放在ONitemselectedlistener之外时,它在该位置显示错误”。setQuery(FirebaseDatabase.getInstance()。getReference()。child(“ Date Wise”)。child(item1).child(us),post .class)“说“不能将空值添加为子级”

我的程序 '''

    package com.example.myapplication;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.linearlayoutmanager;
import androidx.recyclerview.widget.RecyclerView;

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;

import com.firebase.ui.database.FirebaseRecyclerOptions;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.ArrayList;

public class datewise extends AppCompatActivity implements AdapterView.OnItemSelectedListener {

    Spinner sp1;
    ArrayAdapter<String> adapter;
    ArrayList<String> Spinnerlists;
    DatabaseReference dr1,db1;
    ValueEventListener ve;
    String it;
    private postadapter pa1;

    String User = "hissham@hpcl.in";
    String us = User.replace("@hpcl.in","hpcl");


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_datewise);

        sp1= findViewById(R.id.spinnerdt);
        Spinnerlists = new ArrayList<>();
        adapter = new ArrayAdapter<>(datewise.this,android.R.layout.simple_spinner_dropdown_item,Spinnerlists);
        sp1.setAdapter(adapter);
        retrive();
        sp1.setonItemSelectedListener(this);
//        it = sp1.getSelectedItem().toString().trim();
        RecyclerView rv1 = findViewById(R.id.recyclerdt);
        rv1.setLayoutManager(new linearlayoutmanager(this));
        FirebaseRecyclerOptions<post> options =
                new FirebaseRecyclerOptions.Builder<post>()
                        .setQuery(db1,post.class)
                        .build();
        pa1 = new postadapter(options);
        rv1.setAdapter(pa1);

    }
    @Override
    protected void onStart() {
        super.onStart();
        pa1.startListening();
    }
    @Override
    protected void onStop() {
        super.onStop();
        pa1.stopListening();
    }


    private void retrive() {
        dr1=FirebaseDatabase.getInstance().getReference().child("Date Wise");

        ve = dr1.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                for(DataSnapshot item:snapshot.getChildren()){
                    Spinnerlists.add(item.getKey().trim());
                }
                adapter.notifyDataSetChanged();
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });

    }


    @Override
    public void onItemSelected(AdapterView<?> parent,View view,int position,long id) {
        it=parent.getSelectedItem().toString().trim();
        db1 = FirebaseDatabase.getInstance().getReference().child("Date Wise").child(it).child(us);
    }

    @Override
    public void onnothingSelected(AdapterView<?> parent) {

    }

}

解决方法

解决方案很简单,只需删除onStart和onStop即可 “ .setLifecyleOwner”

FirebaseRecyclerOptions<post> options =
                        new FirebaseRecyclerOptions.Builder<post>()
                                .setQuery(FirebaseDatabase.getInstance().getReference().child("Date Wise").child(it).child(us),post.class)
                                .setLifecycleOwner(datewise.this)
                                .build();
                pa1 = new postadapter(options);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。