Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 使用查询时出现KotlinNullException_Firebase_Android Studio_Firebase Realtime Database_Kotlin - Fatal编程技术网

Firebase 使用查询时出现KotlinNullException

Firebase 使用查询时出现KotlinNullException,firebase,android-studio,firebase-realtime-database,kotlin,Firebase,Android Studio,Firebase Realtime Database,Kotlin,我正在尝试构建一个应用程序,将FirebaseDatabase中的图像显示到RecyclerView中,类似于这样,但使用Kotlin,现在我有了Kotlin.KotlinNullPointerException,它指向此代码行 var options = FirebaseRecyclerOptions.Builder<Blog>() .setQuery(query!!, Blog::class.java) .build() 我的数据库看起来像: 在

我正在尝试构建一个应用程序,将FirebaseDatabase中的图像显示到RecyclerView中,类似于这样,但使用Kotlin,现在我有了
Kotlin.KotlinNullPointerException
,它指向此代码行

var options = FirebaseRecyclerOptions.Builder<Blog>()
        .setQuery(query!!, Blog::class.java)
        .build()
我的数据库看起来像:


onCreate
中最初分配
查询之前,您试图使用它。只有在
query
具有非空值后,才应等待创建
选项。请注意,您的
选项
位于类成员级别,在Android调用您的
onCreate
之前,将对其进行评估。您试图在
onCreate
中初始分配
查询
。只有在
query
具有非空值后,才应等待创建
选项。请注意,您的
options
位于类成员级别,在Android调用您的
onCreate

options
移动到onCreate方法并解决问题之前,会对其进行评估,谢谢将
options
移动到onCreate方法并解决问题,谢谢
class MainActivity : AppCompatActivity() {
    private var mDatabase:DatabaseReference? = null
    private var mBlogList:RecyclerView?=null
    private var query:Query?=null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        navBar.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener)
        mDatabase=FirebaseDatabase.getInstance().getReference().child("mall")
        mDatabase?.keepSynced(true)
        mBlogList = findViewById(R.id.recyclee)
        mBlogList?.setHasFixedSize(true)
        mBlogList?.layoutManager = LinearLayoutManager(this)
        query = mDatabase?.orderByKey()
    }
    var options = FirebaseRecyclerOptions.Builder<Blog>()
            .setQuery(query!!, Blog::class.java)
            .build()
    override fun onStart() {
        super.onStart()
        val mAdapter = object : FirebaseRecyclerAdapter<Blog, BlogViewHolder>(
                options) {
            override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BlogViewHolder {
                val view = LayoutInflater.from(parent.context)
                        .inflate(R.layout.cardview, parent, false)
                return BlogViewHolder(view)}

            override fun onBindViewHolder(holder: BlogViewHolder, position: Int, model: Blog) {
                holder.setTitle(model.title)
                holder.setDes(model.des)
                holder.setImage(applicationContext, model.image)
            }
        }
        mBlogList?.adapter = mAdapter
    }
    inner class BlogViewHolder : RecyclerView.ViewHolder{
        var mView:View?=null
        constructor(itemView: View?) : super(itemView) {
            this.mView = itemView
        }
        fun setTitle(title:String){
            var postTitle = mView?.findViewById<TextView>(R.id.post_title)
            postTitle?.text = title
        }
        fun setDes(des:String){
            var postDes = mView?.findViewById<TextView>(R.id.post_des)
            postDes?.text = des
        }
        fun setImage(ctx:Context, image:String){
            var postImage = mView?.findViewById<ImageView>(R.id.post_title)
            Picasso.get().load(image).into(postImage)
        }
    }
}
class Blog(var title: String?, var des: String?, var image: String?)