Size: a a a

Android Developers

2020 February 06

QH

Quantum Harmonizer in Android Developers
Сергей Нану
Всем привет. Кто может верстку лаунчера на тв приставку сделать. Исходники есть. Нужно ссылки заменить и обои приложений. Все за оплату)
источник

I

Iuriich in Android Developers
Simon Belialov
зачем?
Да так, ладно забей, буду OnClickListener передавать:)
источник

TT

Turalllb Turalll in Android Developers
Iuriich
вернет позицию текущего элемента. ты почитай как recyclerview работает, элементов может быть тысяча, а вьюхолдеров используется к примеру с десяток. Вместо того чтобы назначать слушатели на каждый появляемый элемент при скроле можно один раз задать его для этих десяти холдеров
ок, не ясно конечно что значит текущий элемент ( я на телике пультом управляю фокусом, фокус всегда на середине, а getAdapterPosition это для скролла пальцем, скажет какой там последний элемент который показался.    А второе, я не пойму как на холдер повесить слушатель если этот слушатель фокуса можно вешать только на вьюхи, холдер это не вьюха
источник

I

Iuriich in Android Developers
Turalllb Turalll
ок, не ясно конечно что значит текущий элемент ( я на телике пультом управляю фокусом, фокус всегда на середине, а getAdapterPosition это для скролла пальцем, скажет какой там последний элемент который показался.    А второе, я не пойму как на холдер повесить слушатель если этот слушатель фокуса можно вешать только на вьюхи, холдер это не вьюха
Во вьюхе в классе ViewHolder  я имею в виду, а не при onBind
источник

I

Iuriich in Android Developers
Turalllb Turalll
ок, не ясно конечно что значит текущий элемент ( я на телике пультом управляю фокусом, фокус всегда на середине, а getAdapterPosition это для скролла пальцем, скажет какой там последний элемент который показался.    А второе, я не пойму как на холдер повесить слушатель если этот слушатель фокуса можно вешать только на вьюхи, холдер это не вьюха
Проще говоря ViewHolder это кол-во видимых строк. При промотке вьюхолдеры заменяют данные в себе (onbind)  они не создаются заново
источник

TT

Turalllb Turalll in Android Developers
Iuriich
Во вьюхе в классе ViewHolder  я имею в виду, а не при onBind
с этим согласен, холдеры переиспользуются и получается на одну и ту же вьюху по много раз вешаю слушатель, но это единственное место, где я знаю что эта вьюха имеет такую то позицию в списке всех элементов.  а getAdapterPosition не совсем то. Я сейчас попробую конечно , но и документация подтверждает
источник

TT

Turalllb Turalll in Android Developers
RecyclerView не обрабатывает обновления адаптера до следующего обхода макета. Это может создать временные несоответствия между тем, что пользователь видит на экране, и тем, что имеет содержимое адаптера. Это несоответствие не важно, поскольку оно будет меньше 16 мс, но это может быть проблемой, если вы хотите использовать позицию ViewHolder для доступа к адаптеру. Иногда вам может потребоваться определить точное положение адаптера для выполнения некоторых действий в ответ на пользовательские события. В этом случае вы должны использовать этот метод, который будет вычислять позицию адаптера ViewHolder.
источник

JK

J K in Android Developers
@JohnnySC хелп
источник

I

Iuriich in Android Developers
Turalllb Turalll
RecyclerView не обрабатывает обновления адаптера до следующего обхода макета. Это может создать временные несоответствия между тем, что пользователь видит на экране, и тем, что имеет содержимое адаптера. Это несоответствие не важно, поскольку оно будет меньше 16 мс, но это может быть проблемой, если вы хотите использовать позицию ViewHolder для доступа к адаптеру. Иногда вам может потребоваться определить точное положение адаптера для выполнения некоторых действий в ответ на пользовательские события. В этом случае вы должны использовать этот метод, который будет вычислять позицию адаптера ViewHolder.
Это то тут причем. Это вроде если ты обновил данные и вызвал notifydatasetchanged()
источник

QH

Quantum Harmonizer in Android Developers
J K
@JohnnySC хелп
зачем тегать человека, которого нет в чате?
источник

QH

Quantum Harmonizer in Android Developers
J K
Подскажите, а сколько еще голосование будет длится?
пока не выберут нормальный варик))))0)00)))
источник

JK

J K in Android Developers
Quantum Harmonizer
зачем тегать человека, которого нет в чате?
А,тю, простите, а он же был в этом чате, отвечал мне
источник

A

Alex in Android Developers
Turalllb Turalll
блин, где я туплю подскажите, уже бесит проблема. override fun onBindViewHolder(holder: ViewHolder, position: Int) {
   val view = holder.itemView
   holder.dataPosition = position
   visibleViews[position] = holder

   val item = itemForPosition(position) ?: return

   item.attachView(view)



   Log.wtf(" установил слушатель фокуса ")
   holder.itemView.setOnFocusChangeListener { _, hasFocus ->
       wtf(" позиция  + ")
    }
}
в setOnFoocusChangeListener укажи holder.getAdapterPosition
Обычный position вроде устарел и он существует только в момент onBind
В любом колбеке в onBind надо использовать holder.getAdapterPosition - он всегда актуальлный
источник

TT

Turalllb Turalll in Android Developers
Iuriich
Это то тут причем. Это вроде если ты обновил данные и вызвал notifydatasetchanged()
в любом случае, если даже позиция верная, основной проблемы не решает. override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
 val viewHolder =  ViewHolder(viewsProducers.getValue(viewType)(recyclerView!!.context), viewType)
  Log.wtf(" установил слушатель фокуса ")
   viewHolder.itemView.setOnFocusChangeListener { v, hasFocus ->
       Log.wtf(" позиция id = ${v.id} + " )
   }
  return viewHolder
}
.  фокусы устанавливаются, а вызываются только у одного типа вьюх.. думал может дело в том, что id у них -1, но у тех вьюх на которых работает , у них тоже -1 . пробовал задавать id, тоже не работает. в верстках все вьюхи focusable = true
источник

TT

Turalllb Turalll in Android Developers
Alex
в setOnFoocusChangeListener укажи holder.getAdapterPosition
Обычный position вроде устарел и он существует только в момент onBind
В любом колбеке в onBind надо использовать holder.getAdapterPosition - он всегда актуальлный
ок, спасибо, я все это попробую, лишь бы фокус листнер вызывался, пока это нужно решить
источник

I

Iuriich in Android Developers
Turalllb Turalll
в любом случае, если даже позиция верная, основной проблемы не решает. override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
 val viewHolder =  ViewHolder(viewsProducers.getValue(viewType)(recyclerView!!.context), viewType)
  Log.wtf(" установил слушатель фокуса ")
   viewHolder.itemView.setOnFocusChangeListener { v, hasFocus ->
       Log.wtf(" позиция id = ${v.id} + " )
   }
  return viewHolder
}
.  фокусы устанавливаются, а вызываются только у одного типа вьюх.. думал может дело в том, что id у них -1, но у тех вьюх на которых работает , у них тоже -1 . пробовал задавать id, тоже не работает. в верстках все вьюхи focusable = true
я хз а если android:focusable="true" сделать?
источник

A

Alex in Android Developers
Turalllb Turalll
в любом случае, если даже позиция верная, основной проблемы не решает. override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
 val viewHolder =  ViewHolder(viewsProducers.getValue(viewType)(recyclerView!!.context), viewType)
  Log.wtf(" установил слушатель фокуса ")
   viewHolder.itemView.setOnFocusChangeListener { v, hasFocus ->
       Log.wtf(" позиция id = ${v.id} + " )
   }
  return viewHolder
}
.  фокусы устанавливаются, а вызываются только у одного типа вьюх.. думал может дело в том, что id у них -1, но у тех вьюх на которых работает , у них тоже -1 . пробовал задавать id, тоже не работает. в верстках все вьюхи focusable = true
Может у тебя вложенные элементы перекрывают focusable
источник

I

Iuriich in Android Developers
У корневой вьюхи, или к чему ты там привязываешь
источник

I

Iuriich in Android Developers
Turalllb Turalll
в любом случае, если даже позиция верная, основной проблемы не решает. override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
 val viewHolder =  ViewHolder(viewsProducers.getValue(viewType)(recyclerView!!.context), viewType)
  Log.wtf(" установил слушатель фокуса ")
   viewHolder.itemView.setOnFocusChangeListener { v, hasFocus ->
       Log.wtf(" позиция id = ${v.id} + " )
   }
  return viewHolder
}
.  фокусы устанавливаются, а вызываются только у одного типа вьюх.. думал может дело в том, что id у них -1, но у тех вьюх на которых работает , у них тоже -1 . пробовал задавать id, тоже не работает. в верстках все вьюхи focusable = true
itemView это че такое? Покажи xml элемента
источник

А

Александр in Android Developers
Привет, вопрос: как то можно проверить что конкретный пользователь нашего приложения уже оценил/ещё не оценил его в google play?
источник