Я могу заставить работать начальную часть в onBindViewHolder:
Код: Выделить всё
if (position > 0) {
view.foo.visibility = View.GONE
}
else {
view.foo.visibility = View.VISIBLE
}
Я знаю, что мне нужен в моем адаптере и вызвать этот метод в действии ViewAll.onclickListnener. Я просто не уверен, что добавить в метод адаптера или как он взаимодействует с условиями внутри onBindViewHolder.
Есть ли какой-нибудь простой способ просто изменить list.size вперед и назад?< /p>
По возможности предпочтительнее использовать Kotlin.
Изменить:
Код: Выделить всё
class Adapter(private var list: List) : RecyclerView.Adapter(){
internal fun setDataSet(list: ArrayList) {
this.list = list
}
var showAll: Boolean = false
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val textView: TextView = view.findViewById(R.id.textView)
}
override fun onCreateViewHolder(viewGroup: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(viewGroup.context)
.inflate(R.layout.recyclerview, viewGroup, false)
return ViewHolder(view)
}
override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) {
val model = list[position]
if(showAll){
println("showAll is triggered!")
viewHolder.textView.visibility = View.VISIBLE
viewHolder.textView.text = model.textView
}else{
viewHolder.textView.text = list[0].textView
if (viewHolder.adapterPosition > 0){
println("this is triggered!")
viewHolder.textView.visibility = View.GONE
}
}
println("listsize at start: $size")
}
fun updateAdapter(showAll: Boolean) {
this.showAll = showAll
notifyDataSetChanged()
println("listsize after click: $size")
}
override fun getItemCount() = list.size
Код: Выделить всё
buttonPlus.setOnClickListener {
adapter.updateAdapter(true)
println("button pressed")
}
buttonMinus.setOnClickListener {
adapter.updateAdapter(false)
println("button pressed")
}
Код: Выделить всё
Подробнее здесь: [url]https://stackoverflow.com/questions/78975305/hide-show-recyclerview-items-after-activity-button-click[/url]
Мобильная версия