日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

2个RecyclerView 联动

發布時間:2023/11/27 生活经验 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2个RecyclerView 联动 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

看下效果圖, 底部在給出demo地址

如果想實現類似拼多多的商品聯動也是可以的,修改方法即可 下面看下實現方法

幾個參數需要知道

findFirstVisibleItemPosition 顯示界面第一個position
findLastVisibleItemPosition 顯示界面最后一個position
scrollToPositionWithOffset 跳轉到指定位置

具體代碼如下

public class MainActivity extends AppCompatActivity {private RecyclerView top_recy;RecyclerViewAdapter topAdapter;List<Integer> topList = new ArrayList<>();private RecyclerView bottom_recy;RecyclerViewAdapter bottomAdapter;List<Integer> bottomList = new ArrayList<>();int currentPosition = 1;private int[] img ={R.mipmap.one,R.mipmap.ele,R.mipmap.two,R.mipmap.et,R.mipmap.three,R.mipmap.nine,R.mipmap.four,R.mipmap.seven,R.mipmap.five,R.mipmap.ten};@RequiresApi(api = Build.VERSION_CODES.M)@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);top_recy = findViewById(R.id.hor_recy);bottom_recy = findViewById(R.id.hor_max_recy);for(int i=0;i<img.length;i++){topList.add(img[i]);}top_recy.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false));topAdapter = new RecyclerViewAdapter(this,R.layout.hot_item_layout,topList);top_recy.setAdapter(topAdapter);topAdapter.setCallBack(new RecyclerViewAdapter.CallBack() {@Overridepublic <T> void convert(IViewHolder holder, T bean, int position) {ImageView horImageView = (ImageView) holder.getView(R.id.hor_item_img);Glide.with(MainActivity.this).load(bean).into(horImageView);}});top_recy.addOnScrollListener(new RecyclerView.OnScrollListener() {@Overridepublic void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {super.onScrollStateChanged(recyclerView, newState);//獲得recyclerView的線性布局管理器LinearLayoutManager topManager = (LinearLayoutManager) top_recy.getLayoutManager();LinearLayoutManager bottomManager = (LinearLayoutManager) bottom_recy.getLayoutManager();//獲取滾動時的第一條展示的positioncurrentPosition = topManager.findFirstVisibleItemPosition();//打這些log 是為了查看下表,剛開始話滑動不好,就是下表出現了問題,配圖的時候注意一下呢Log.i("-----firsttop", String.valueOf(currentPosition));Log.i("------firstbottom", String.valueOf(bottomManager.findFirstVisibleItemPosition()));Log.i("------lastbottom", String.valueOf(bottomManager.findLastVisibleItemPosition()));if (bottomManager.findFirstVisibleItemPosition()>=currentPosition){//跳到并行位置,一般商城類商品類跳轉頂部的使用這個方法
//                    bottomManager.scrollToPositionWithOffset(currentPosition,0);bottom_recy.smoothScrollToPosition(currentPosition);}else if (bottomManager.findLastVisibleItemPosition() < currentPosition) {
//                    bottomManager.scrollToPositionWithOffset(currentPosition, 0);bottom_recy.smoothScrollToPosition(currentPosition);}bottomAdapter.notifyDataSetChanged();}});for(int i=0;i<img.length;i++){bottomList.add((img[i]));}bottom_recy.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false));bottomAdapter = new RecyclerViewAdapter(this,R.layout.max_item_layout,bottomList);bottom_recy.setAdapter(bottomAdapter);bottomAdapter.setCallBack(new RecyclerViewAdapter.CallBack() {@Overridepublic <T> void convert(IViewHolder holder, T bean, int position) {ImageView maxImage = (ImageView) holder.getView(R.id.max_image);Glide.with(MainActivity.this).load(bean).into(maxImage);}});bottomAdapter.setOnItemClickListner(new RecyclerViewAdapter.OnItemClickListner() {@Overridepublic void onItemClickListner(View v, int position) {LinearLayoutManager linearLayoutManager = (LinearLayoutManager) top_recy.getLayoutManager();linearLayoutManager.scrollToPositionWithOffset(position,0);  // 定位到某個item,并將其置頂顯示}});findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {startActivity(new Intent(MainActivity.this,RecyActivity.class));}});findViewById(R.id.btn1).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {startActivity(new Intent(MainActivity.this,GridActivity.class));}});}
}

?布局適配器就不寫了,?

demo地址,如果幫助了您希望給個star

?

總結

以上是生活随笔為你收集整理的2个RecyclerView 联动的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。