[英]Previous and Next Button in Horizontal RecyclerView
我正在創建電子商務應用程序,我想問你什么時候單擊下一步按鈕然后 RecyclerView 向右移動並顯示下一個項目,當我單擊上一個按鈕然后 RecyclerView 向左移動並顯示上一個項目時?
RecyclerView 外的上一個和下一個按鈕:
代碼 :
private RecyclerView rcTopPicks;
private RecyclerView.Adapter adapter;
private LinearLayoutManager layoutManager;
private ImageView previousTopPicks, nextTopPicks;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home, container, false);
previousTopPicks = view.findViewById(R.id.btn_left_top_picks);
nextTopPicks = view.findViewById(R.id.btn_right_top_picks);
initView(view);
getTopPicksData();
return view;
}
private void initViews(View view) {
rcTopPicks = view.findViewById(R.id.rc_top_picks);
layoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false);
rcTopPicks.setLayoutManager(layoutManager);
}
private void getTopPicksData() {
// Code for get JSON
....................
adapter = new TopPicksAdapter(productList);
rcTopPicks.setAdapter(adapter);
// This button is not move to left and not showing 2 previous items
previousTopPicks.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
rcTopPicks.scrollToPosition(adapter.getItemCount() - 1);
}
});
// This button is not move to right and not showing 2 next items
nextTopPicks.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
rcTopPicks.scrollToPosition(adapter.getItemCount() + 1);
}
});
}
問題是當我單擊下一步按鈕時如何向右滾動 recyclerview 的位置? 以及如何在單擊上一個按鈕時向左滾動 recyclerview 的位置?
嘗試在layoutManager
的幫助下滾動到位置,您可以將這樣的內容添加到您的代碼中。
int firstVisible = layoutManager.findFirstVisibleItemPosition() - 1;
int lastVisible = layoutManager.findLastVisibleItemPosition() + 1;
if(lastVisible <= adapter.getItemCount()){
layoutManager.scrollToPosition(lastVisible);
}
單擊下一個和上一個按鈕,此代碼從當前位置滾動到下一個/上一個視圖。
binding.btPrevImage.setOnClickListener{
val imageCurrentPosition= (binding.rvAllImage.layoutManager as LinearLayoutManager).findFirstVisibleItemPosition()
if(imageCurrentPosition>0){
binding.rvAllImage.smoothScrollToPosition(imageCurrentPosition-1)
}
}
binding.btNextImage.setOnClickListener{
val imageCurrentPosition= (binding.rvAllImage.layoutManager as LinearLayoutManager).findLastVisibleItemPosition()
if(imageCurrentPosition<productImageAdapter.itemCount-1){
binding.rvAllImage.smoothScrollToPosition(imageCurrentPosition+1)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.