У меня есть неопределенный список элементов (переопределить fun getItemCount() = list.size). Я хотел бы сначала показать пользователю только элемент позиции 0. После того, как я нажму кнопку «Просмотреть все» за пределами просмотра recyclerview, но в своей деятельности я хотел бы отобразить оставшиеся элементы моего списка.
Я могу заставить работать начальную часть в 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
MainActivity:
buttonPlus.setOnClickListener {
adapter.updateAdapter(true)
println("button pressed")
}
buttonMinus.setOnClickListener {
adapter.updateAdapter(false)
println("button pressed")
}
XML:
Подробнее здесь: https://stackoverflow.com/questions/789 ... tton-click
Скрыть/показать элементы RecyclerView после нажатия кнопки активности ⇐ JAVA
Программисты JAVA общаются здесь
1726762704
Anonymous
У меня есть неопределенный список элементов (переопределить fun getItemCount() = list.size). Я хотел бы сначала показать пользователю только элемент позиции 0. После того, как я нажму кнопку «Просмотреть все» за пределами просмотра recyclerview, но в своей деятельности я хотел бы отобразить оставшиеся элементы моего списка.
Я могу заставить работать начальную часть в 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
MainActivity:
buttonPlus.setOnClickListener {
adapter.updateAdapter(true)
println("button pressed")
}
buttonMinus.setOnClickListener {
adapter.updateAdapter(false)
println("button pressed")
}
XML:
Подробнее здесь: [url]https://stackoverflow.com/questions/78975305/hide-show-recyclerview-items-after-activity-button-click[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия