Я новичок в Android (у меня есть некоторый опыт работы с Java Spring), и у меня проблема с заполнением 'link.fls.swipestack.SwipeStack' представления с помощью данные, полученные из базы данных Google Firestore. Фрагмент со SwipeStack запускается до получения списка с данными из базы данных. Таким образом, список не может быть вовремя передан адаптеру SwipeStack. Как решить эту проблему?
class MyViewModel(private val repository: Repository) : ViewModel() {
var wordsListLiveData: MutableLiveData<List<WordPresentation>> = MutableLiveData()
fun getWordsList(): LiveData<List<WordPresentation>> {
val collectionReference = repository.getCollectionReference()
collectionReference.get().addOnCompleteListener {
val wordsList = it.result!!.toObjects(WordPresentation::class.java)
wordsListLiveData.value = wordsList
return wordsListLiveData
}
}
class MyFragment : Fragment() {
private val viewModel by inject<MyViewModel>()
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val adapter = MySwipeStackAdapter()
adapter.setListener(this)
viewModel.getWordsList().observe(viewLifecycleOwner, Observer {
adapter.setDataList(it)
})
val binding = FragmentMyBinding.inflate(inflater)
binding.lifecycleOwner = this
binding.swipeStack.adapter = adapter
binding.viewModel = viewModel
return binding.root
}
}
class MySwipeStackAdapter : BaseAdapter() {
private lateinit var wordsList: List<WordPresentation>
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
// here I create ViewHolders with the data from the 'wordsList'
}
fun setDataList(list: List<WordDePresentation>) {
wordsList = list
}
}