我尝试使用适配器制作RecyclerView,但看不到布局吗?

时间:2019-08-22 19:49:06

标签: kotlin android-recyclerview recycler-adapter

我试图用适配器类和cardview布局构建一个recyclerview,但是即使代码运行,我也看不到cardview的列表(我只得到一个空白的recyclerview)?

SpeakerAdapter.kt

class SpeakerAdapter (val speakers: ArrayList<String>): RecyclerView.Adapter<SpeakerAdapter.ViewHolder>() {
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {


    val speakerName: TextView = itemView.findViewById(R.id.name)

}

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    holder.speakerName.text = speakers[position]

}

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
    val View = LayoutInflater.from(parent.context).inflate(R.layout.speaker_list, parent, false)
    return ViewHolder(View)
}

override fun getItemCount() = speakers.size

}

Speaker.kt

class Speaker : AppCompatActivity() {



override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
    super.onCreate(savedInstanceState, persistentState)
    setContentView(R.layout.activity_speaker)

    val speakers : ArrayList<String> = ArrayList()
    for (i in 1..100){
        speakers.add("Speaker 1 #$i")


    recyclerView_speaker.layoutManager = LinearLayoutManager(this)
    recyclerView_speaker.adapter = SpeakerAdapter(speakers)

}


}}

1 个答案:

答案 0 :(得分:0)

如果没有xml,则很难调试。但是什么也没做:

我认为值得修改您的视图持有者类。初始化视图保持器时,将设置文本视图的引用,并且布局可能尚未膨胀。将数据绑定到视图时,请尝试查找引用,以避免出现此问题。

尝试一下:

class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {

    fun bind(name: String?) {
        itemView. name.text = name
    }
}

然后修改您的适配器以调用此方法

class SpeakerAdapter (val speakers: ArrayList<String>): RecyclerView.Adapter<SpeakerAdapter.ViewHolder>() {

    ...

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        holder.bind(speakers[position])
    }
}

PS:最好给视图持有者打电话。 ViewHolder是android SDK已使用的名称。例如:SpeakerViewholder