как упорядочить collection по дате в firestore?

( помогите пожалуйста!!) Всем привет! Я у меня есть код который добавляет данные в collection в firestore и есть код который стягивает данные из collection и добавляет в recyclerView при start'e приложения я стягиваю упорядочиванные данные через orderBy потом user при нажатии на button добавляет данные но данные становятся в разброс и так постоянно при нажатии на button

class FireStoreRepository @Inject constructor(private val fireStore: FirebaseFirestore) {

var collectionReference = fireStore.collection("users")

// код добавление
fun setupToDataFirebase(user: HashMap<String, Any>) {
    collectionReference.add(user)
        .addOnCompleteListener { document ->
            if (document.isSuccessful) {
                Log.e("tag", "Is Good")
            } else {
                Log.e("tag", "Not bad$document")
            }
        }
}

fun getDataFromServer(): MutableLiveData<ArrayList<TaskModel>> {
    var data: MutableLiveData<ArrayList<TaskModel>> = MutableLiveData()
    collectionReference
        .orderBy("second", Query.Direction.ASCENDING)
        .get()
        .addOnSuccessListener { result ->
            val list: ArrayList<TaskModel> = ArrayList()
            for (document in result) {
                   val model: String = document.getString("first").toString()
                   val second: String = document.getString("second").toString()
                   val models = TaskModel(model)
                   Log.d(
                    "TAG", "${document.id} => ${document.data}"
                   )
                  list.add(models)
               }
              data.value = list
            }
            .addOnFailureListener { exception ->
              Log.w("TAG", "Error getting documents.", exception)
          }
        return data
     }

}

ViewModel

@HiltViewModel
class FireBaseViewModel @Inject constructor(private val repository: FireStoreRepository) : 
ViewModel() {

fun setupData(user: HashMap<String, Any>) {
    repository.setupToDataFirebase(user)
}

fun getData(): MutableLiveData<ArrayList<TaskModel>>{
    return repository.getDataFromServer()
}

}

@AndroidEntryPoint
class FireBase : Fragment() {


private lateinit var binding: FragmentFireBaseBinding
private val taskAdapter: TaskAdapter = TaskAdapter()
private val viewModel: FireBaseViewModel by viewModels()



override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?,
): View {
    binding = FragmentFireBaseBinding.inflate(inflater, container, false)
    return binding.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    setupRecyclerView()
    getDataFromServer()
    setupDataToFireBase()
}

private fun setupRecyclerView() {
    binding.recView.apply {
        layoutManager = LinearLayoutManager(context)
        adapter = taskAdapter
    }
}

private fun setupDataToFireBase() {

    binding.btnGo.setOnClickListener {
        val date = SimpleDateFormat("hhmmss")

        val time = date.format(Date())

   
        val user = hashMapOf(
            "first" to binding.editText.text.toString(),
            "second" to FieldValue.serverTimestamp()
        )
        viewModel.setupData(user)
        getDataFromServer()
    }
}

private fun getDataFromServer() {
    viewModel.getData().observe(viewLifecycleOwner, {
        taskAdapter.addAllList(it)
    })
}

}

заранее спасибо!!


Ответы (1 шт):

Автор решения: Wockeez
db.collection("nameDoc").orderBy("date", "desc").get().then() ....

Попробуй вот так

А здесь дока официальная по сортировке

→ Ссылка