2017-04-12 3 views
0

私は、標準的な方法でSnapHelperを使用してrecyclerViewをセットアップしました。それはうまく動作します。しかし、アイテムが「スナップ」して、そのインデックスでTextViewを更新できるようにするために、通知が必要です。私は、recyclerViewでsetOnFlingListenerを設定しようとしましたが、snapHelperはすでに例外のインスタンスを設定しているため、例外がスローされます。RecyclerViewアイテムがSnapHelperによって適所にスナップされたときの通知方法

RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview); 
    layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false); 
    recyclerView.setLayoutManager(layoutManager); 
    adapter = new PlantAdapter(this, Globals.getPlants()); 
    recyclerView.setAdapter(adapter); 
    snapHelper = new snapHelper(this); 
    snapHelper.attachToRecyclerView(recyclerView); 

いつ、どのアイテムがスナップされたかを正確に知る別の方法はありますか?

答えて

0

私はそれを理解しました。私はrecyclerviewにonScrollListenerを追加し、スクロール状態がSCROLL_STATE_IDLEのときにonScrollStateChangedの位置を取得します。

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { 
     @Override 
     public void onScrollStateChanged(RecyclerView recyclerView, int newState) { 
      if(newState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) { 
       View centerView = snapHelper.findSnapView(layoutManager); 
       if (centerView != null) { 
        int pos = layoutManager.getPosition(centerView); 
        updateAdapterPosition(pos); 
       } 
       else { 
        updateAdapterPosition(markers.size() - 1); 
       } 
      } 
     } 
    }); 
関連する問題