2017-02-20 13 views
1

У меня есть вид ресайзера, который функционирует как тикер, автоматическая прокрутка работает нормально сначала, но через некоторое время становится странным (назад и вперед), и просмотр ресайклера застревает у элемента без гладкой прокрутки, может кто-нибудь мне помочь.Ошибка автоматического прокрутки в режиме горизонтального ресайклера

это мой менеджер компоновки:

LinearLayoutManager layoutManager = new LinearLayoutManager(HomeActivity.this, LinearLayoutManager.HORIZONTAL, false) { 
     @Override 
     public void smoothScrollToPosition(RecyclerView recyclerView, RecyclerView.State state, int position) { 
      LinearSmoothScroller smoothScroller = new LinearSmoothScroller(HomeActivity.this) { 
       private static final float SPEED = 5500f;// Change this value (default=25f) 
       @Override 
       protected float calculateSpeedPerPixel(DisplayMetrics displayMetrics) { 
        return SPEED/displayMetrics.densityDpi; 
       } 
      }; 
      smoothScroller.setTargetPosition(position); 
      startSmoothScroll(smoothScroller); 
     } 

    }; 
    rvTicker.setLayoutManager(layoutManager); 

это моя автопрокрутка функция:

public void autoScroll(){ 
    speedScroll = 0; 
    handler = new Handler(); 
    runnable = new Runnable() { 
     int count = 0; 
     @Override 
     public void run() { 
      if(count == tickerAdapter.getItemCount()) 
       count = 0; 
      if(count < tickerAdapter.getItemCount()){ 
       rvTicker.smoothScrollToPosition(++count); 
       handler.postDelayed(this,speedScroll); 
      } 
     } 
    }; 
    handler.postDelayed(runnable,speedScroll); 
} 

ответ

0

решаемая, я отлажен функция автопрокрутки:

public void autoScroll(){ 
    speedScroll = 0; 
    handler = new Handler(); 
    runnable = new Runnable() { 
     int count = 0; 
     @Override 
     public void run() { 
      if(count == tickerAdapter.getItemCount()) 
       count = 0; 
      else { 
       if(count < tickerAdapter.getItemCount()){ 
        rvTicker.smoothScrollToPosition(++count); 
        handler.postDelayed(this,speedScroll); 
       }else { 
        count = 0; 
       } 
      } 
      Log.wtf("tickerAdapter.getItemCount()", tickerAdapter.getItemCount()+""); 
      Log.wtf("count", count+""); 
      Log.wtf("++count", ++count+""); 
      Log.wtf("==============","============="); 
     } 
    }; 
    handler.postDelayed(runnable,speedScroll); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^