Recyclerview и PagerSnapHelper позиция отличается при прокрутке страницы Android - PullRequest
0 голосов
/ 02 июля 2019

У меня есть утилита просмотра с PagerSnapHelper для прокрутки страницы одна за другой.Здесь высота и ширина моего вида равна match_parent. Проблема заключается в том, что когда я прокручиваю страницу в программе повторного просмотра, позиция выглядит как 0 и 1 в позиции элемента 0, а когда я прокручиваю страницу, она показывает позиции 1 и 2 в позиции элемента 1. Просмотрвыглядит идеально, но из-за этого короля позиции, мое событие просмотра клика не работает.Я хочу только одну позицию за один раз, когда я переворачиваюсь. Например, когда страница загружается в первый раз, она показывает позицию 0, затем, когда я прокручиваю страницу, она должна показывать 1, снова прокручивать, позиция должна показывать 2 и так далее.Еще одна вещь, которую я заметил с PagerSnapHelper, это то, что когда я прокручиваю в обратном порядке справа налево, позиция отображается случайным образом, а не отображается в потоке, как 3,2,1. Как я могу это исправить?в действии.

RecyclerView.LayoutManager mLayoutManager = new 
LinearLayoutManager(ReportActivity.this, LinearLayoutManager.HORIZONTAL, 
false);
PagerSnapHelper pagerSnapHelper = new SnapHelperOneByOne();
recyclerViewreport.setLayoutManager(mLayoutManager);
pagerSnapHelper.attachToRecyclerView(recyclerViewreport);
recyclerviewReportAdapter = new RecyclerviewReportAdapter(reportList, 
ReportActivity.this, recyclerViewreport, linearSnapHelper, 
onTouchListener, isEnabledPagePadding);
recyclerViewreport.setAdapter(recyclerviewReportAdapter);
recyclerviewReportAdapter.notifyDataSetChanged();

// вот мое событие click дляlativeLayout в классе адаптера.

holder.relativeLayoutForehead.setOnClickListener(new 
View.OnClickListener() {
 @Override
        public void onClick(View view) {
            ivFace.setForheadZoom();
            if (!isVisible) {
                holder.relativeLayoutAcneDesc.setVisibility(View.VISIBLE);               
                holder.ivTriangleForhead.setVisibility(View.VISIBLE);
                holder.ivTriangleCheek.setVisibility(View.GONE);
                holder.ivTriangleChin.setVisibility(View.GONE);
                holder.ivTriangleNose.setVisibility(View.GONE);
                holder.tvAcneInfo.setText(forehead.getText());
                isVisible = true;
            } else {
                holder.relativeLayoutAcneDesc.setVisibility(View.GONE);
                holder.ivTriangleForhead.setVisibility(View.GONE);
                holder.ivTriangleCheek.setVisibility(View.GONE);
                holder.ivTriangleChin.setVisibility(View.GONE);
                holder.ivTriangleNose.setVisibility(View.GONE);
                isVisible = false;
            }
        }
 });
...