Хронометры внутри предметов на RecyclerView, которые не видны пользователям, не запускаются, - PullRequest
0 голосов
/ 15 апреля 2019

Я создал рециркуляционное представление, которое обновляет себя набором данных о произвольных временах, у меня есть хронометр на каждом из этих элементов, и в некоторых случаях эти хронометры должны запускаться, как только они отображаются, проблема состоит в том, что хронометры, которые пользователь не видел, не запускаются, пока пользователь не прокрутит их.

Я использую 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());
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...