Как я могу отображать каждый элемент из массива списка в RecyclerView, используя библиотеку подкачки?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу отображать каждый элемент из массива списка в RecyclerView, используя библиотеку подкачки?

Сообщение Anonymous »

Всем доброе утро! Надеюсь, у вас все хорошо.
Я работаю с базой данных комнат с двумя таблицами или объектами и хочу отобразить список всех курсов, пройденных студентом, в ресайклере. Просмотр с помощью разбиения по страницам библиотекарь. В методе bind() адаптера, когда я впервые использовал привязку.courseName.text = StudentCourse.courses.courseName.toString(), чтобы увидеть результат после сохранения четырех курсов в базе данных. и имя студента, прошедшего эти курсы, он возвращает такой массив:
**[Course(courseName=Android, CourseDuration=50), Course(courseName=Python, CourseDuration=40), Course(courseName=Kotlin, CourseDuration=36), Course(courseName=English, CourseDuration=25)]
Приведенный ниже код возвращает только один курс с его имя и продолжительность в представлении переработчика, и это последний курс массива.
Две таблицы или сущности: Курс и Студент определяются следующим образом:
@Entity(tableName = "course_table")
data class Course(
@PrimaryKey(autoGenerate = false)
val courseName : String,

@ColumnInfo(name = "course_duration")
val courseDuration : String
)

@Entity(tableName = "student_table")
data class Student(
@PrimaryKey(autoGenerate = false)
val studentName : String,

val semester : Int,

val schoolName : String
)

Отношения между этими двумя классами представлены классами StudentAndCourse и CourseAndStudent**, определяемыми следующим образом:
data class StudentAndCourse(
@Embedded
val student : Student,

@Relation(
parentColumn = "studentName",
entityColumn = "courseName",
associateBy = Junction(StudentAndCourseTogether::class)
)

val courses : List
)

data class CourseAndStudent(
@Embedded
val course : Course,

@Relation(
parentColumn = "courseName",
entityColumn = "studentName",
associateBy = Junction(StudentAndCourseTogether::class)
)

val students : List
)

Запрос, который я определил в Dao, чтобы получить все курсы, пройденные конкретным студентом, указанным по его имени:
@Query("SELECT * FROM student_table WHERE studentName = :studentName")
fun getAllCoursesByStudentName(studentName: String) : PagingSource```

Here is my Paging Adapter class:


class CourseByStudentNameAdapter:
PagingDataAdapter(DiffCallback) {
class CourseByStudentNameViewHolder(private val binding: CourseByStudentNameItemBinding) :
RecyclerView.ViewHolder(binding.root){

fun bind(studentAndCourse: StudentAndCourse){
for (course in studentAndCourse.courses){
binding.courseName.text = course.courseName
binding.courseDuration.text = course.courseDuration
}
}
}

override fun onCreateViewHolder(
parent: ViewGroup,
viewType: Int,
): CourseByStudentNameAdapter.CourseByStudentNameViewHolder {
val inflatedLayout = CourseByStudentNameItemBinding.inflate(LayoutInflater.from(
parent.context), parent, false)

return CourseByStudentNameViewHolder(inflatedLayout)
}

override fun onBindViewHolder(holder: CourseByStudentNameAdapter.CourseByStudentNameViewHolder, position: Int) {
val currentCourse = getItem(position)

if (currentCourse != null) {
holder.bind(currentCourse)
}
}

companion object DiffCallback : DiffUtil.ItemCallback(){
override fun areItemsTheSame(
oldItem: StudentAndCourse,
newItem: StudentAndCourse
): Boolean = oldItem.courses == newItem.courses

override fun areContentsTheSame(
oldItem: StudentAndCourse,
newItem: StudentAndCourse
): Boolean = oldItem == newItem

}

}```
Мой XML-файл, содержащий элементы:










```

My fragment code:

```
@AndroidEntryPoint
class AllCourseByStudentNameFragment : Fragment() {

private var _binding : FragmentAllCourseByStudentNameBinding? = null
private val binding get() = _binding!!

private val viewModel : SchoolViewModel by activityViewModels()

private lateinit var adapter : CourseByStudentNameAdapter

private val schoolName = "IFRI"
private val studentName = "Esperant"
private val courseName = "Android"

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

setHasOptionsMenu(true)
}

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?,
): View? {
// Inflate the layout for this fragment
_binding = FragmentAllCourseByStudentNameBinding.inflate(inflater)
return binding.root
}

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

adapter = CourseByStudentNameAdapter()
binding.apply {
recyclerView.adapter = adapter
recyclerView.layoutManager = LinearLayoutManager(requireContext())
recyclerView.setHasFixedSize(true)
}

viewModel.setName(studentName)
viewModel.courseByStudentName.observe(viewLifecycleOwner){
adapter.submitData(viewLifecycleOwner.lifecycle, it)
}
}

override fun onDestroyView() {
super.onDestroyView()

_binding = null
}
}```

I will be very glad to get your help. Thanks in advance.



Подробнее здесь: https://stackoverflow.com/questions/715 ... ing-paging
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Kotlin RecyclerView в RecyclerView после обновления представление переходит в дочерний RecyclerView
    Anonymous » » в форуме Android
    0 Ответы
    80 Просмотры
    Последнее сообщение Anonymous
  • Библиотека подкачки Android, Endless RecyclerView, модернизация
    Anonymous » » в форуме Android
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Пустой экран после загрузки некоторых данных в библиотеку подкачки 3
    Anonymous » » в форуме Android
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Пустой экран после загрузки некоторых данных в библиотеку подкачки 3
    Anonymous » » в форуме Android
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Загрузка URL-адреса изображения в элемент ListView с использованием подкачки в Android
    Anonymous » » в форуме Android
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»