Я создал рециркуляционное представление, которое обновляет себя набором данных о произвольных временах, у меня есть хронометр на каждом из этих элементов, и в некоторых случаях эти хронометры должны запускаться, как только они отображаются, проблема состоит в том, что хронометры, которые пользователь не видел, не запускаются, пока пользователь не прокрутит их.
Я использую android-studio для просмотра утилит с помощью gridlayoutmanager.
Я пытался с
GridLayoutManager itemlistManager= new GridLayoutManager(getApplicationContext(),3);
itemlistManager.setItemPrefetchEnabled(true);
itemlistManager.collectAdjacentPrefetchPositions(3,10,null,null);
Но это не показывает никакой разницы
Ожидается, что все хронометры будут тикать, как только будет создан вид, но сейчас мне нужно прокрутить до конца, чтобы начать хронометры в конце списка.
bindViewHolder
@Override
public void onBindViewHolder(@NonNull final ViewHolderData holder, final int position) {
long sumtime=0,diferenceToSum=0;
if(myConstants.chronometerFix){
holder.myChronometer.setBase(SystemClock.elapsedRealtime());
}else{
if(myList.get(position).getCronometerTimeSum()!=null&&!myList.get(position).getCronometerTimeSum().trim().isEmpty()){
sumtime = myUtilities.string2milis(myList.get(position).getCronometerTimeSum());
}
if(myList.get(position).getMyItemState().equals("1")){
if(myList.get(position).getCronometerStart()!=null&&!myList.get(position).getCronometerStart().trim().isEmpty()&&myList.get(position).getServerTime()!=null&&!myList.get(position).getServerTime().trim().isEmpty()){
diferenceToSum = myUtilities.datesCompareToMilis(myList.get(position).getCronometerStart(),myList.get(position).getServerTime());
}
holder.myChronometer.setBase(SystemClock.elapsedRealtime()-sumtime-myConstants.myCronometerOffsetFinal-diferenceToSum);
holder.myChronometer.start();
}else{
holder.myChronometer.setBase(SystemClock.elapsedRealtime()-sumtime);
}
}
String temp = myList.get(position).getName() +
" / " +
myList.get(position).getItemName() +
" / " +
myList.get(position).getPosition();
holder.myNamePositionItem.setText(temp);
holder.myPosition.setText(String.valueOf(myList.get(position).getPosition()));
holder.myName.setText(myList.get(position).getMyName());
}