Метод setAdapter
Метод setAdapter класса
RecyclerView
принимает
Adapter,
то есть наследника RecyclerView.Adapter.
После вызова RecyclerView создаёт ViewHolder
и вызывает
onBindViewHolder.
Смену данных шлют через
notifyDataSetChanged.
Синтаксис
recyclerView.adapter = myAdapter
Параметры
| Параметр | Описание |
|---|---|
adapter |
Объект RecyclerView.Adapter
или null, чтобы отключить список.
|
Пример
Давайте передадим adapter с двумя строками:
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val recycler = findViewById<RecyclerView>(R.id.list)
recycler.layoutManager = LinearLayoutManager(this)
recycler.setAdapter(SimpleAdapter(listOf("abcde", "12345")))
}
}
class SimpleAdapter(private val items: List<String>) :
RecyclerView.Adapter<SimpleAdapter.RowHolder>() {
class RowHolder(view: View) : RecyclerView.ViewHolder(view) {
val text: TextView = view.findViewById(R.id.label)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RowHolder {
val row = LayoutInflater.from(parent.context)
.inflate(R.layout.item_line, parent, false)
return RowHolder(row)
}
override fun onBindViewHolder(holder: RowHolder, position: Int) {
holder.text.text = items[position]
}
override fun getItemCount(): Int = items.size
}
На экране RecyclerView покажет два пункта с текстом из списка.
Смотрите также
-
класс
Adapter,
который передают в setAdapter -
метод
setLayoutManager,
который задают перед adapter -
метод
notifyDataSetChanged,
который обновляет список после смены данных -
класс
RecyclerView,
который рисует пункты adapter