简体   繁体   English

发现名称冲突的吸气剂

[英]Found conflicting getters for name

I am a beginner in kotlin coding and I am trying to make a search bar with edit text which can find the user account from the fire-base.我是 kotlin 编码的初学者,我正在尝试制作一个带有编辑文本的搜索栏,可以从 fire-base 中找到用户帐户。 Here are my codes这是我的代码

    package com.example.videoapp

import android.annotation.SuppressLint
import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.EditText
import androidx.core.widget.addTextChangedListener
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.example.videoapp.Adapter.UserAdapter
import com.example.videoapp.Model.Users
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.database.*
import kotlinx.android.synthetic.main.fragment_explore.*
import kotlinx.android.synthetic.main.fragment_explore.view.*
import kotlinx.android.synthetic.main.fragment_explore.view.recyclerView
import java.util.*
import kotlin.collections.ArrayList

/**
 * A simple [Fragment] subclass.
 */
class ExploreFragment : Fragment() {
   private var recyclerView: RecyclerView?=null
    private var userAdapter:UserAdapter?=null
    private var mUser: List<Users>?=null
    private var searchEditText: EditText?=null


    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        val view= inflater.inflate(R.layout.fragment_explore, container, false)
        recyclerView = view.findViewById(R.id.recyclerView)
        recyclerView!!.setHasFixedSize(true)
        recyclerView!!.layoutManager = LinearLayoutManager(context)
        searchEditText = view.findViewById(R.id.search_edit_text)

        mUser = ArrayList()
        retrieveAllUserd()
        searchEditText!!.addTextChangedListener(object :TextWatcher{
            override fun afterTextChanged(s: Editable?) {
            }

            override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
            }

            override fun onTextChanged(cs: CharSequence?, start: Int, before: Int, count: Int) {
                searchForUser(cs.toString().toLowerCase())
            }
        })

        return view
    }

    private fun retrieveAllUserd() {
        var firebaseUserID = FirebaseAuth.getInstance().currentUser!!.uid
        val refUser =  FirebaseDatabase.getInstance().reference.child("Users").child(firebaseUserID)
        refUser.addValueEventListener(object :ValueEventListener{
            override fun onDataChange(p0: DataSnapshot) {
                (mUser as ArrayList<Users>).clear()
                if (searchEditText!!.text.toString() == ""){
                    for (snapshot in p0.children){
                        val user = snapshot.getValue(Users::class.java)
                        if (!(user!!.getid()).equals(firebaseUserID)){
                            (mUser as ArrayList<Users>).add(user)

                        }
                    }

                }
                userAdapter = UserAdapter(
                    mContext = context!!,
                    mUser = mUser!!,
                    isFragment = false
                )
                recyclerView!!.adapter = userAdapter
            }

            override fun onCancelled(p0: DatabaseError) {
            }

         })

    }
    private fun searchForUser(str: String){
        var firebaseUserID = FirebaseAuth.getInstance().currentUser!!.uid
        val queryUserd = FirebaseDatabase.getInstance().reference.child("Users").orderByChild("name").startAt(str)
            .endAt(str+"\uf8ff")
        queryUserd.addValueEventListener(object : ValueEventListener{
            override fun onCancelled(p0: DatabaseError) {
            }

            override fun onDataChange(p0: DataSnapshot) {
                (mUser as ArrayList<Users>).clear()
                for (snapshot in p0.children){
                    val user = snapshot.getValue(Users::class.java)
                    if (!(user!!.getid()).equals(firebaseUserID)) {
                        (mUser as ArrayList<Users>).add(user)
                    }
                }

                userAdapter = UserAdapter(context!!,mUser!!,false)
                recyclerView!!.adapter = userAdapter


            }
        })
    }


}

package com.example.videoapp.Model包 com.example.videoapp.Model

class Users {
    var username:String = " "
    var Fullname:String = " "
    var image:String = " "
    var id:String = " "

    constructor()
    constructor(username: String, fullname: String, image: String, id: String) {
        this.username = username
        this.Fullname = fullname
        this.image = image
        this.id = id
    }
    fun getusername(): String{
        return username
    }
    fun setusername(username: String){
        this.username=username
    }
    fun getfullname(): String{
        return fullname
    }
    fun setfullname(fullname: String){
        this.Fullname=fullname
}

    fun getimage(): String{
        return image
    }
    fun setimage(image: String){
        this.image=image
    }
    fun getid(): String{
        return id
    }
    fun setid(id: String){
        this.id=id
    }


}

But whenever I am typing any word in the search its returning an error但是每当我在搜索中输入任何单词时,它都会返回错误

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.videoapp, PID: 4847
com.google.firebase.database.DatabaseException: Found conflicting getters for name: getfullname
    at com.google.firebase.database.core.utilities.encoding.CustomClassMapper$BeanMapper.<init>(com.google.firebase:firebase-database@@19.3.0:477)
    at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.loadOrCreateBeanMapperForClass(com.google.firebase:firebase-database@@19.3.0:329)
    at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertBean(com.google.firebase:firebase-database@@19.3.0:430)
    at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.deserializeToClass(com.google.firebase:firebase-database@@19.3.0:231)
    at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertToCustomClass(com.google.firebase:firebase-database@@19.3.0:79)
    at com.google.firebase.database.DataSnapshot.getValue(com.google.firebase:firebase-database@@19.3.0:203)
    at com.example.videoapp.ExploreFragment$searchForUser$1.onDataChange(ExploreFragment.kt:104)
    at com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@19.3.0:75)
    at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@19.3.0:63)
    at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@19.3.0:55)
    at android.os.Handler.handleCallback(Handler.java:790)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:164)

at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.爪哇:807)

This is all you need to declare your User class:这就是声明User类所需的全部内容:

class Users(
    var username:String = " "
    var Fullname:String = " "
    var image:String = " "
    var id:String = " "
)

Getters and Setters are automatically generated by the Kotlin compiler. Getter 和 Setter 由 Kotlin 编译器自动生成。

Try to get rid of getters and setters and use data class:尝试摆脱 getter 和 setter 并使用data类:

data class User(
        var username: String = " ",
        var fullName: String = " ",
        var image: String = " ",
        var id: String = " "
)

Parameters of primary constructor, eg username, become properties , so you don't need to write additional getter and setter functions for them.主构造函数的参数,例如用户名,变成了属性,所以你不需要为它们编写额外的 getter 和 setter 函数。

Kotlin compiler generates getters for read-only variables (getters and setters for read-write variables) defined in a class. Kotlin 编译器为类中定义的只读变量(读写变量的 getter 和 setter)生成 getter。 Because you have a variable named fullname and custom getfullname and setfullname you will have two getters and two setters for fullname variable.因为您有一个名为fullname的变量以及自定义getfullnamegetfullnamesetfullname您将有两个 getter 和两个 setter 用于fullname变量。

Here are all get methods you will see from Java code:以下是您将在 Java 代码中看到的所有get方法:

用户类中的所有 get 方法

And looks like snapshot.getValue(Users::class.java) does not know which getters and setters to use.并且看起来像snapshot.getValue(Users::class.java)不知道要使用哪个getterssetters

Simples solution should be removing custom methods:简单的解决方案应该是删除自定义方法:

class Users {
    var username:String = " "
    var Fullname:String = " "
    var image:String = " "
    var id:String = " "

    constructor()
    constructor(username: String, fullname: String, image: String, id: String) {
        this.username = username
        this.Fullname = fullname
        this.image = image
        this.id = id
    }
}

Otherwise, update variables declaration with private access modifier:否则,使用private访问修饰符更新变量声明:

class Users {
    private var username:String = " "
    private var Fullname:String = " "
    private var image:String = " "
    private var id:String = " "

    constructor()
    constructor(username: String, fullname: String, image: String, id: String) {
        this.username = username
        this.Fullname = fullname
        this.image = image
        this.id = id
    }

    // Below are your custom getters and setters
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 发现名称的冲突吸气剂:getText - found conflicting getters for name: getText 发现名称冲突的吸气剂:isImportantForAccessibility - Found conflicting getters for name: isImportantForAccessibility 找到名称冲突的吸气剂:isFocusable - Found conflicting getters for name: isFocusable 发现名称冲突的吸气剂:数据库异常 - Found conflicting getters for name:Database Exception Firebase 异常“发现名称冲突的 getter:isChangingConfigurations” - Firebase Exception “Found conflicting getters for name: isChangingConfigurations” Firestore:发现名称isText冲突的吸气剂 - Firestore: Found conflicting getters for name isText Firebase数据库错误:找到名称冲突的getter:isAccessibilityFocusable - Firebase database error : Found conflicting getters for name: isAccessibilityFocusable com.google.firebase.database.DatabaseException:找到两个具有属性区分大小写的getter或字段 - com.google.firebase.database.DatabaseException: Found two getters or fields with conflicting case sensitivity for property: name com.google.firebase.database.DatabaseException:发现名称冲突的吸气剂:isChangingConfigurations - com.google.firebase.database.DatabaseException: Found conflicting getters for name: isChangingConfigurations “com.google.firebase.database.DatabaseException:发现名称冲突的吸气剂:isChangingConfigurations”android - "com.google.firebase.database.DatabaseException: Found conflicting getters for name: isChangingConfigurations" android
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM