我创建了一个回收器视图,可以在任意时间更新其自身的数据集合,在每个项目上都显示一个天文钟,在某些情况下,这些天文钟一经显示便要启动,问题是直到用户滚动到它们之前,用户看不见的天文钟才启动。
我正在使用gridlayoutmanager在recyclerview上使用android-studio。
我尝试过
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());
}