2017-04-20 131 views
2

如何更新滚动位置。现在每当我点击物品时,位置都会更新。我想每次滚动时更新位置。我想要做的是有一个文本视图,它将在滚动项目时得到更新。滚动时更新recyclerview的位置(android)

recyclerView.addOnItemTouchListener(new GalleryAdapter.RecyclerTouchListener(this, recyclerView, new GalleryAdapter.ClickListener() 
      { 

       @Override 
       public void onClick(View view, int position) { 

        Intent intent = new Intent(mainActivityCarasoul.this, PDFViewerActivity.class); 
        intent.putExtra(PDFViewerActivity.TAG, books.get(position)); 
        intent.putExtra("from", "mainActivityCarasoul"); 
        startActivity(intent); 
       } 
       @Override 
       public void onLongClick(View view, int position) { 
       } 
      })); 

      recyclerView.addOnScrollListener(new CenterScrollListener()); 

      recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { 
       @Override 
       public void onScrollStateChanged(RecyclerView recyclerView, int newState) { 
        super.onScrollStateChanged(recyclerView, newState); 
        // title.setText(books.get(position).getName()); 

       } 
      }); 
+1

您onBindView持有人你是什么意思更新的位置?你需要描述你想要做得更清楚的事情。 –

+0

我更新了问题 –

+0

退房http://stackoverflow.com/questions/24989218/get-visible-items-in-recyclerview –

回答

0

嗨,你可以使用下面的代码,

mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() 
    { 
     @Override 
     public void onScrolled(RecyclerView recyclerView, int dx, int dy) 
     { 
      GridLayoutManager layoutManager = ((GridLayoutManager)mRecyclerView.getLayoutManager()); 
      int firstVisiblePosition = layoutManager.findFirstVisibleItemPosition(); 
      int findFirstCompletelyVisibleItemPosition = layoutManager.findFirstCompletelyVisibleItemPosition(); 
      int findLastVisibleItemPosition = layoutManager.findLastVisibleItemPosition(); 
      int findLastCompletelyVisibleItemPosition = layoutManager.findLastCompletelyVisibleItemPosition(); 
     } 
    }); 
+0

我得到这个错误java.lang.ClassCastException:com.azoft.carousellayoutmanager.CarouselLayoutManager can not be强制转换为android.support.v7.widget.GridLayoutManager –

+0

我认为你的setLayoutManager是CarouselLayoutManager,所以你可以在上面的代码中将GridLayoutManager更改为CarouselLayoutManager。即CarouselLayoutManager layoutManager =((CarouselLayoutManager)mRecyclerView.getLayoutManager()); –

+1

是的,我试过,但我在这4行findFirstVisibleItemPosition(); –

0

利用这一点,你必须保持你的活动,并在您的适配器类selectedItem属性为INT intialize previousPoistion = -1 previousPosition;和selectedPosition = 1;

@Override 
     public void onScrollStateChanged(RecyclerView recyclerView, int newState) { 
      super.onScrollStateChanged(recyclerView, newState); 
      switch (newState) { 
       case 0: 
        int pos = linearLayoutManager1.findLastVisibleItemPosition(); 
        yourAdapter.selectedPosition = pos - 1; 
        previousPosition = pos - 1; 
        yourTextView.setText(yourLIst.get(pos-1)); 
        break; 
      } 
     } 
    }); 

和适配器

@Override 
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) { 
if (position == selectedPosition) { 
      //do what you want when selected 
      } 
} 
相关问题