как исправить компоновку пропуска без адаптера Attatch - PullRequest
0 голосов
/ 27 февраля 2020

У меня проблема, когда я пытаюсь отобразить recyvlerview с помощью kotlin, предупреждаю, что в моем приложении нет пропускаемого присоединения адаптера и ничего не происходит, я пробовал много способов, но ничего не решило, как я могу это сделать? пожалуйста, просмотрите мой код, я буду очень признателен всем, кто может помочь, у меня есть проблема, когда я пытаюсь отобразить recyvlerview, используя kotlin, предупреждаю, что в моем приложении не пропущен макет подключения адаптера, и ничего не происходит в моем приложении, я пробовал много способов, но ничего не решило, как я мог делать ? пожалуйста, просмотрите мой код, я буду очень благодарен всем, кто может помочь

class ArticleFragment : Fragment() {


private lateinit var mPeopleRVAdapter: FirebaseRecyclerAdapter<News, NewsViewHolder>

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

}

//viewholder
class NewsViewHolder internal constructor(var mView: View) : RecyclerView.ViewHolder(mView) {
    fun setTitle(title: String?) {
        val post_title = mView.findViewById<View>(R.id.post_title) as TextView
        post_title.text = title
    }

    fun setDesc(desc: String?) {
        val post_desc = mView.findViewById<View>(R.id.post_desc) as TextView
        post_desc.text = desc
    }

    fun setImage(ctx: Context?, image: String?) {
        val post_image = mView.findViewById<View>(R.id.post_image) as ImageView
        Picasso.with(ctx).load(image).into(post_image)
    }

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


    //"News" here will reflect what you have called your database in Firebase.
    //"News" here will reflect what you have called your database in Firebase.
    val mDatabase = FirebaseDatabase.getInstance().reference.child("news")
    mDatabase.keepSynced(true)

    val mPeopleRV = view.findViewById<View>(R.id.myRecycleView) as RecyclerView

    val personsRef =
        FirebaseDatabase.getInstance().reference.child("news")
    val personsQuery = personsRef.orderByKey()



    val personsOptions: FirebaseRecyclerOptions<News> = FirebaseRecyclerOptions.Builder<News>().setQuery(
        personsQuery, News::class.java).build()

    mPeopleRVAdapter = object : FirebaseRecyclerAdapter<News, NewsViewHolder>(personsOptions) {
        override fun onBindViewHolder(holder: NewsViewHolder, position: Int, model: News) {
            holder.setTitle(model.title)
            holder.setDesc(model.desc)
            holder.setImage(activity ,model.image)
            holder.mView.setOnClickListener {
                val url: String? = model.url
                val intent = Intent(activity, NewsWebView::class.java)
                intent.putExtra("id", url)
                startActivity(intent)
            }
            mPeopleRV.hasFixedSize()
            mPeopleRV.layoutManager = LinearLayoutManager(context)
            mPeopleRV.apply {
                mPeopleRV.adapter = mPeopleRVAdapter
            }



        }

        override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): NewsViewHolder {
            val view = LayoutInflater.from(parent.context).inflate(R.layout.news_row, parent, false)
            return NewsViewHolder(view)
        }
    }
}
override fun onStart() {
    super.onStart()
    mPeopleRVAdapter.startListening()
}

override fun onStop() {
    super.onStop()
    this.mPeopleRVAdapter.stopListening()
}

}

1 Ответ

0 голосов
/ 27 февраля 2020

Переместите этот код из адаптера:

mPeopleRV.hasFixedSize()
mPeopleRV.layoutManager = LinearLayoutManager(context)
mPeopleRV.apply {
    mPeopleRV.adapter = mPeopleRVAdapter
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...