Я пытаюсь сделать копию своего списка, который содержит в себе массивы, но когда я редактирую скопированное значение, исходные значения меняются, что означает, что я передаю свой ref, я пробовал все виды методов, таких как использование метод копирования для каждого элемента или создание списка / изменяемого списка из оригинала, но он не работает, поэтому мой вопрос: как передать значение в kotlin вместо ref?
Я сделал оригинал как val и его поле тоже.
class FAQAdapter(val faqModel: MutableList<FAQSection>) : RecyclerView.Adapter<FAQAdapter.ViewHolder>() {
val faqOriginal: List<FAQSection>
var faqSectionsCopy: MutableList<FAQSection>
init {
faqOriginal = faqModel
faqSectionsCopy = faqModel.toMutableList()
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return ViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.faq_section_item, parent, false))
}
override fun getItemCount(): Int {
return faqSectionsCopy.size
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.faqSectionHeading.text =
faqSectionsCopy.get(holder.adapterPosition).sectionheader
holder.questionsRecyclerView.layoutManager =
LinearLayoutManager(holder.itemView.context,
LinearLayoutManager.VERTICAL, false)
holder.questionsRecyclerView.adapter =
FAQQuestionsAdapter(faqSectionsCopy.get(holder.adapterPosition)
.faqQuestions)
holder.questionsRecyclerView.setHasFixedSize(true)
holder.questionsRecyclerView.minimumHeight = convertDpToPx(holder.itemView.context, 88) * faqSectionsCopy.get(holder.adapterPosition).faqQuestions.size
}
fun filter(text: String) {
var text = text.trim().toLowerCase()
// faqSectionsCopy.clear()
if (text.isEmpty()) {
// faqSectionsCopy = faqModel as ArrayList<FAQSection>
} else {
text = text.toLowerCase()
faqSectionsCopy.map {
faqSectionsCopy[0].faqQuestions = it.faqQuestions.filter { it.question.contains(text) } as ArrayList<FAQQuestion>
}
}
notifyDataSetChanged()
}
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
var questionsRecyclerView = itemView.faqQuestionsRecyclerView
var faqSectionHeading = itemView.faqHeading
}
}