Список данных не отображается в представлении Recycler в основном действии в приложении Android, используя kotlin для разработки.

Код активности_main.xml:

<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="sampleex_recycleview.himanshu.recycleview.MainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/RecViewId" android:layout_width="0dp" android:layout_height="0dp" android:layout_marginBottom="8dp" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> 

Список данных для RecyclerView в основной деятельности, list_row.xml код:

 <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:background="@color/cardview_shadow_end_color" android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.CardView android:layout_width="375dp" android:layout_height="140dp" android:layout_marginBottom="8dp" android:layout_marginEnd="8dp" android:layout_marginStart="4dp" android:layout_marginTop="8dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.0"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/imageViewPhoto" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_centerVertical="true" android:layout_marginStart="13dp" android:padding="25dp" app:srcCompat="@mipmap/ic_launcher_round" /> <TextView android:id="@+id/AgeTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_below="@+id/NameTextView" android:layout_marginTop="14dp" android:layout_toRightOf="@id/imageViewPhoto" android:hint="age" android:padding="5dp" /> <TextView android:id="@+id/NameTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignTop="@+id/imageViewPhoto" android:layout_marginTop="22dp" android:layout_toEndOf="@+id/imageViewPhoto" android:hint="name" android:padding="5dp" /> </RelativeLayout> </android.support.v7.widget.CardView> 

Основной вид деятельности здесь:

 class MainActivity : AppCompatActivity() { private var adapter : PersonListAdapter? = null private var layoutManager : RecyclerView.LayoutManager? = null private var personList : ArrayList<Person>? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) personList = ArrayList<Person>() layoutManager = LinearLayoutManager(this) adapter = PersonListAdapter(personList!!, this) //set up recycle view RecViewId.layoutManager = layoutManager RecViewId.adapter = adapter // loading data for(i in 1..15){ var person = Person() person.name = "Person " + i person.age = 21 + i } adapter!!.notifyDataSetChanged() } } 

Код адаптера класса (существует в имени пакета «Данные»): // класс адаптера для раздувания макета для списка в представлении ресайклера и анализа данных в компонентах фейла макета

 class PersonListAdapter(private var list : ArrayList<Person>, var context: Context) : RecyclerView.Adapter<PersonListAdapter.ViewHolder>() { override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder { val view = LayoutInflater.from(context).inflate(R.layout.list_row, parent, false) return ViewHolder(view) } override fun onBindViewHolder(holder: ViewHolder?, position: Int) { holder?.bindItem(list[position]) } override fun getItemCount(): Int { return list.size } class ViewHolder(itemView : View) : RecyclerView.ViewHolder(itemView) { fun bindItem(person: Person){ var Name : TextView = itemView.findViewById(R.id.NameTextView) as TextView var Age : TextView = itemView.findViewById(R.id.AgeTextView) as TextView Name.text = person.name Age.text = person.age.toString() } } } 

Person Class '(существует в другом имени пакета «Модель»): // класс для размещения данных, которые будут отображаться в списке данных в представлении Recycler в основном действии

 class Person{ var name : String? = null var age : Int? = null } 

Ваш просто создающий объект. Эти объекты необходимо добавить в personList.

  for(i in 1..15){ var person = Person() person.name = "Person " + i person.age = 21 + i personList.add(person) // Add person object to the list } 

Также вы неправильно инициализируете RecyclerView в приведенном выше коде.

 //set up recycle view val recView = findViewById<RecyclerView>(R.id.RecViewId) recView.layoutManager = layoutManager recView.adapter = adapter 

Попробуем этот код:

  <android.support.v7.widget.RecyclerView android:id="@+id/RecViewId" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="8dp" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> 

и установить фиксированный размер для RecyclerView

Intereting Posts
Отладка встроенных функций Kotlin Как отобразить Список << MyClass> в список <T>? Выбранный в настоящее время отладчик Java не поддерживает точки останова типа «Точки останова линии Котлин», Kotlin использует утверждения времени выполнения для проверки нуля – служебные накладные расходы? Получить дату datepicker на Kotlin TornadoFX Какое надлежащее обходное решение для @BeforeAll в Котлине Поведение с функциями высшего порядка Котлина и интерфейсами с одним методом? Могу ли я преобразовать строку в выражение шаблона или выражение лямбда в kotlin? Как разделить строку с набором разделителей и найти, что это за разделитель? Котлин Android Parcelable в Котлине @StringRes, @DrawableRes, @LayoutRes и т. Д. Андроидные аннотации lint check с параметрами kotlin Как использовать volatile на Kotlin Скомпилированные файлы kt состоят из байт-кодов? Анимационный набор, эффект встряхивания Как сопоставить варианты соответствия в Котлин?