用户看不到的RecyclerView上的项目中的天文钟无法启动,

时间:2019-04-15 17:52:01

标签: java android android-recyclerview

我创建了一个回收器视图,可以在任意时间更新其自身的数据集合,在每个项目上都显示一个天文钟,在某些情况下,这些天文钟一经显示便要启动,问题是直到用户滚动到它们之前,用户看不见的天文钟才启动。

我正在使用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());
    }

0 个答案:

没有答案