Size: a a a

2019 November 02

AM

Andrew Mikhaylov in Kotlin Start
Возьмите первый кусок кода, который работает, а после уже снаружи for вызовите ваш sort.
источник

VM

Vadim Morozov in Kotlin Start
let нужен потому как у меня переменная target nullable
                    val target = targetSnapshot.getValue(Target::class.java)
источник

AM

Andrew Mikhaylov in Kotlin Start
Ну вот вам тут никто не мешает написать
val target = ...
if(target != null) {
   targetList.add(target)
}
источник

VM

Vadim Morozov in Kotlin Start
Andrew Mikhaylov
Я нихрена не понял. В первом случае вы, если находите target, добавляете его в targetList, во втором, если вы находите target, вы его не используете, а просто кажый раз сортируете targetList.
может что то и не так
попробую объяснить
я в свой список для каждого элемента добавляю поля из data class Target
в первом случае
источник

VM

Vadim Morozov in Kotlin Start
Andrew Mikhaylov
Ну вот вам тут никто не мешает написать
val target = ...
if(target != null) {
   targetList.add(target)
}
этот кусок кода работает
источник

VM

Vadim Morozov in Kotlin Start
Andrew Mikhaylov
Ну вот вам тут никто не мешает написать
val target = ...
if(target != null) {
   targetList.add(target)
}
я аналагично пробую писать и для сортировки и тут лажа
источник

AM

Andrew Mikhaylov in Kotlin Start
Vadim Morozov
я аналагично пробую писать и для сортировки и тут лажа
Значит вы плохо пытались, раз вы не поняли, что вам предлагают.
источник

VM

Vadim Morozov in Kotlin Start
Andrew Mikhaylov
Значит вы плохо пытались, раз вы не поняли, что вам предлагают.
я понял что то типа этого
if(target != null) {
                       targetList.sortedByDescending { it.priority}
                   }
источник

AM

Andrew Mikhaylov in Kotlin Start
for (targetSnapshot in dataSnapshot.children) {
   val target = targetSnapshot.getValue(Target::class.java)
   target?.let { targetList.add(it) }
}

targetList.sortByDescending { it.priority }
источник

AM

Andrew Mikhaylov in Kotlin Start
Vadim Morozov
я понял что то типа этого
if(target != null) {
                       targetList.sortedByDescending { it.priority}
                   }
Ну так что этот кусок делать должен? Вы ж пытаетесь понять то, что вы пишете?
источник

AM

Andrew Mikhaylov in Kotlin Start
Перевожу ваши догадки на русский: "для каждого снэпшота находим таргет, и если он нашёлся -- сортируем список". Тут нет ничего про то, что вы делаете с найденным таргетом. В то время как вы, вероятно, хотели "для каждого снэпшота находим таргет, и если он нашёлся -- добавляем его в список. В конце сортируем список". То, что вам и предложили сделать.
источник

VM

Vadim Morozov in Kotlin Start
Andrew Mikhaylov
for (targetSnapshot in dataSnapshot.children) {
   val target = targetSnapshot.getValue(Target::class.java)
   target?.let { targetList.add(it) }
}

targetList.sortByDescending { it.priority }
и так я тоже пробовал, но увы( не срабатывает
источник

AM

Andrew Mikhaylov in Kotlin Start
Vadim Morozov
и так я тоже пробовал, но увы( не срабатывает
Ну на этом мои полномочия всё. У вас есть отладчик, он намного лучше чатика понимает, что и как вы делаете, и здравый смысл, который должен вам помочь описанные словами требования в код уложить.
источник

VM

Vadim Morozov in Kotlin Start
Andrew Mikhaylov
Ну на этом мои полномочия всё. У вас есть отладчик, он намного лучше чатика понимает, что и как вы делаете, и здравый смысл, который должен вам помочь описанные словами требования в код уложить.
но логами вывел список
и да он не пустой зато теперь
вот полный код метода
fun getTargetsByPriority() {
       val valueEventListener = object : ValueEventListener {
           override fun onDataChange(dataSnapshot: DataSnapshot) {
               targetList.clear()
               for (targetSnapshot in dataSnapshot.children) {
                   val target = targetSnapshot.getValue(Target::class.java)
                   target?.let { targetList.add(it) }
               }
               targetList.sortedByDescending { it.priority }
               contract.updateViewContent()
           }

           override fun onCancelled(databaseError: DatabaseError) {
               Log.d("some", "Error trying to get targets for ${databaseError.message}")
           }
       }
       targetsRef?.addListenerForSingleValueEvent(valueEventListener)
   }


и вот лог
2019-11-02 22:51:08.222 5489-5489/com.mandarine.target_list D/some: targetList: [Target(guid=-LrizWpFMU714rExtoit, name=huhy, description=hhhyy, date=0, priority=2), Target(guid=-LrizfGg0cKxlftLuL29, name=hhh, description=hhhh, date=0, priority=1), Target(guid=-Ls2Qr_H9jTbchvFBny4, name=hhh, description=hhhh, date=1572134400000, priority=0), Target(guid=-LshguMEgE6vPYMUxIQT, name=ооо, description=ооо, date=1574208000000, priority=1)]
источник

AM

Andrew Mikhaylov in Kotlin Start
Мой косяк, скопипастил глупость, не дочитав. Конечно же sortBy, а не sortedBy.
источник

AM

Andrew Mikhaylov in Kotlin Start
В чате уже несколько раз объясняли, в чём разница.
источник

AM

Andrew Mikhaylov in Kotlin Start
Поправил свой сниппет.
источник

VM

Vadim Morozov in Kotlin Start
Andrew Mikhaylov
Мой косяк, скопипастил глупость, не дочитав. Конечно же sortBy, а не sortedBy.
супер
спасибо за помощь в такое время
источник
2019 November 03

AM

Andrew Mikhaylov in Kotlin Start
А вот если вы пройдёте несколько раз Kotlin Koans, сможете превратить этот код во что-то такое:
targetList.clear()
dataSnapshot.children
   .mapNotNull { it.getValue(Target::class.java) }
   .sortedByDescending { it.priority }
   .toCollection(targetList)

Вжух — и стало лаконично и понятно.
источник

VM

Vadim Morozov in Kotlin Start
Andrew Mikhaylov
А вот если вы пройдёте несколько раз Kotlin Koans, сможете превратить этот код во что-то такое:
targetList.clear()
dataSnapshot.children
   .mapNotNull { it.getValue(Target::class.java) }
   .sortedByDescending { it.priority }
   .toCollection(targetList)

Вжух — и стало лаконично и понятно.
kotlin koans?
источник