RecyclerView не получает элементы из firestore KOTLIN firebase - PullRequest
0 голосов
/ 09 мая 2020

я хочу получить recyclerview в моем конце домашнего фрагмента, установленном в элементы из firestore firebase

Моя проблема с получением элементов из firestore! возможно, кто знает, как искать проблему, потому что элементы не поступают из firestore!

HomeFragment

class HomeFragment : Fragment() {

    private val TAG = "HomeFragment"

    private val firebaseRepository: FirebaseNoteRepo = FirebaseNoteRepo()
    private var noteList: List<NotesModel> = ArrayList()
    private val notesListAdapter: NotesListAdapterClass = NotesListAdapterClass(noteList)

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_home, container, false)
    }

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

    private fun init(view: View) {

        if(firebaseRepository.getUser() == null){
            Log.d(TAG,"Error log user")
        }else{ loadNotesData()}

        note_list_recycler_view.layoutManager = LinearLayoutManager(context)
       note_list_recycler_view.adapter = notesListAdapter

        add_note_fab.setOnClickListener {
            noteCreateDialog(view)
        }
    }



    private fun loadNotesData() {
        firebaseRepository.getNoteList().addOnCompleteListener {
            if (it.isSuccessful){
                noteList = it.result!!.toObjects(NotesModel::class.java)
                notesListAdapter.notesListItem = noteList
                notesListAdapter.notifyDataSetChanged()
            }else{
                Log.d(TAG,"Error: ${it.exception!!.message}")
            }
        }
    }

my NotesModel

data class NotesModel(
    val title: String = "",
    val date: com.google.firebase.Timestamp? = null,
    val post_type: Long = 0
)

мой репозиторий FirebaseNoreRepo

class FirebaseNoteRepo {
    private val firebaseAuth: FirebaseAuth = FirebaseAuth.getInstance()
    private val firebaseFirestore: FirebaseFirestore = FirebaseFirestore.getInstance()
   fun getUser(): FirebaseUser? {
        return firebaseAuth.currentUser
    }


    fun getNoteList(): Task<QuerySnapshot> {
        Log.d("HomeFragment","    ad "+ firebaseFirestore.collection("Notes").get().toString())
        return firebaseFirestore
            .collection("Notes")
            .orderBy("title", Query.Direction.ASCENDING)
            .get()
    }

и мой адаптер

class NotesListAdapterClass (var notesListItem: List<NotesModel>):
    RecyclerView.Adapter<RecyclerView.ViewHolder>() {
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
        val view = LayoutInflater.from(parent.context).inflate(R.layout.note_layout,parent,false)
        return ViewHolderNotes(view)
    }

    override fun getItemViewType(position: Int): Int {
        return if (notesListItem[position].post_type == 1L){
            POST_TYPE1
        }else{
            POST_TYPE1
        }

    }

    override fun getItemCount(): Int {
        Log.d("HomeFragment","notesListAdapter size : "+notesListItem.size)
        return notesListItem.size
    }

    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
        if (getItemViewType(position) == POST_TYPE1){
            (holder as ViewHolderNotes).bind(notesListItem[position])
        }
    }

    class ViewHolderNotes(itemView: View):RecyclerView.ViewHolder(itemView){
        fun bind(notesModel: NotesModel){
            itemView.note_title.text = notesModel.title
        }
    }

}

в моем адаптере у меня есть Log.d он сказал мне размер списка элементов (всегда равно 0), в firestore у меня есть 2 элемента. Я не понимаю, почему в журнале у меня 0!

Сценарий базы данных

введите описание изображения здесь

...