• 01-12-2019, 18:16:51
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhabalar android dünyasında yeniyim normal recyclerview yapabiliyorum fakat firebase'den bir türlü veriyi getiremedim

    yapmak istediğim şey liderlik tablosu gibi bir şey skora göre sıralanacak


    User

    code tagı içinde düzgün gözükmediği için kod tagı içinde ve dışında atıyorum
    class User {    var user_id:String?=null    var username:String?=null    var image:Int?=null    var score:String?=null    constructor(user_id: String, username: String, image: Int, score: String) {        this.user_id = user_id        this.username = username        this.image = image        this.score = score    }    constructor() {}}
    class User {

    var user_id:String?=null
    var username:String?=null
    var image:Int?=null
    var score:String?=null

    constructor(user_id: String, username: String, image: Int, score: String) {
    this.user_id = user_id
    this.username = username
    this.image = image
    this.score = score
    }

    constructor() {}
    }



    Adapter

    class Adapter(    val leaders: MutableList<User>,    val context: Context) : RecyclerView.Adapter<Adapter.LeadersViewHolder>() {    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): LeadersViewHolder {        return LeadersViewHolder(LayoutInflater.from(context).inflate(R.layout.leader_row_layout, parent, false))    }    override fun getItemCount() = leaders.size    override fun onBindViewHolder(holder: LeadersViewHolder, position: Int) {        with(leaders[position]) {            holder.nickname.text = username            holder.point.text = score            holder.image.setImageResource(image!!)        }    }    class LeadersViewHolder(view: View) : RecyclerView.ViewHolder(view) {        val image= view.leadersRowIV        val nickname= view.leadersRowNickNameTV        val point= view.leadersRowPointTV    }}


    class Adapter(val leaders: MutableList<User>,val context: Context) : RecyclerView.Adapter<Adapter.LeadersViewHolder>() {

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): LeadersViewHolder {
    return LeadersViewHolder(LayoutInflater.from(context).inf late(R.layout.leader_row_layout, parent, false))
    }

    override fun getItemCount() = leaders.size

    override fun onBindViewHolder(holder: LeadersViewHolder, position: Int) {
    with(leaders[position]) {
    holder.nickname.text = username
    holder.point.text = score
    holder.image.setImageResource(image!!)
    }
    }

    class LeadersViewHolder(view: View) : RecyclerView.ViewHolder(view) {
    val image= view.leadersRowIV
    val nickname= view.leadersRowNickNameTV
    val point= view.leadersRowPointTV
    }
    }

    Activity

    class Activity : AppCompatActivity() {    override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)        setContentView(R.layout.leaders_activity)        val mLayoutManager = LinearLayoutManager(this)        with(leadersRV) {            layoutManager = mLayoutManager            adapter = Adapter(generateLeadersData(), this@Activity)        }    }    private fun generateLeadersData(): MutableList<User> {        var referans = FirebaseDatabase.getInstance()    }  }


    class Activity : AppCompatActivity() {


    override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.leaders_activity)

    val mLayoutManager = LinearLayoutManager(this)
    with(leadersRV) {
    layoutManager = mLayoutManager
    adapter = Adapter(generateLeadersData(), this@Activity)
    }
    }

    private fun generateLeadersData(): MutableList<User> {

    var referans = FirebaseDatabase.getInstance()
    }

    }
  • 01-12-2019, 22:18:10
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba kodları ezbere yazdım o yüzden parantez hatası vs. olabilir. Aşağıdaki şekilde verileri çekebilirsin. Aklına takılan yer varsa açıklayabilirim.

    var referans = FirebaseDatabase.getInstance()
    val userList : MutableList<User> = arrayListOf()
    
    referans.child("User").orderByChild("score").addListenerForSingleValueEvent(object : ValueEventListener {
    override fun onDataChange(userSnapshots : DataSnapshot) {
    
    for(userSnapshot in userSnapshots.children ){
    val mUser = userSnapshot.getValue(User::class.java)
    tempList.add(mUser!!)
    
    }
    
    }
    
    override fun onCancelled(userSnapshots DatabaseError) {
    }
    }
  • 02-12-2019, 07:39:37
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Kotlin'de data class kullanmanızı öneririm

    data class User(val user_id:String = "",
    val username:String = "",
    val image:Int = 0,
    var score:String = "")
    Alttaki mesaja ek olarak


    val ref = FirebaseDatabase.getInstance().reference
    ref.child("User").orderByChild("score").addListenerForSingleValueEvent(object : ValueEventListener {    
    override fun onDataChange(userSnapshots : DataSnapshot) {        
        userSnapshots.children.forEach { snap ->          
        val mUser = snap.getValue(User::class.java) ?: return@forEach          
        tempList.add(mUser)      
     }
        }    
    override fun onCancelled(e: DatabaseError) {    }
    }
  • 02-12-2019, 17:07:57
    #4
    Pcoyuncy adlı üyeden alıntı: mesajı görüntüle
    Kotlin'de data class kullanmanızı öneririm

    data class User(val user_id:String = "",
    val username:String = "",
    val image:Int = 0,
    var score:String = "")
    Alttaki mesaja ek olarak


    val ref = FirebaseDatabase.getInstance().reference
    ref.child("User").orderByChild("score").addListenerForSingleValueEvent(object : ValueEventListener {    
    override fun onDataChange(userSnapshots : DataSnapshot) {        
        userSnapshots.children.forEach { snap ->          
        val mUser = snap.getValue(User::class.java) ?: return@forEach          
        tempList.add(mUser)      
     }
        }    
    override fun onCancelled(e: DatabaseError) {    }
    }
    WinstonSoft adlı üyeden alıntı: mesajı görüntüle
    Merhaba kodları ezbere yazdım o yüzden parantez hatası vs. olabilir. Aşağıdaki şekilde verileri çekebilirsin. Aklına takılan yer varsa açıklayabilirim.

    var referans = FirebaseDatabase.getInstance()
    val userList : MutableList<User> = arrayListOf()
    
    referans.child("User").orderByChild("score").addListenerForSingleValueEvent(object : ValueEventListener {
    override fun onDataChange(userSnapshots : DataSnapshot) {
    
    for(userSnapshot in userSnapshots.children ){
    val mUser = userSnapshot.getValue(User::class.java)
    tempList.add(mUser!!)
    
    }
    
    }
    
    override fun onCancelled(userSnapshots DatabaseError) {
    }
    }

    kodlarda problem çıkmadı fakat hiçbir şey gelmedi

    öncesinde direk böyle getiriyordum yapamadım bi türlü

        
    private fun generateLeadersData(): MutableList<User> {
         val leaders = mutableListOf(User(...),User(...))
    
         val filteredLeaders = leaders
              .filter { it.point > 0 }
              .sortedByDescending { it.point }
    
         return filteredLeaders.toMutableList()
        }