স্ক্রোল করার সময় যখন রিসাইক্লারভিউ নীচে সবচেয়ে বেশি অবস্থানে পৌঁছায় তখন সনাক্ত করুন De


94

আমার কাছে একটি পুনর্ব্যবহারযোগ্য ভিউয়ের জন্য এই কোডটি রয়েছে।

    recyclerView = (RecyclerView)rootview.findViewById(R.id.fabric_recyclerView);
    recyclerView.setLayoutManager(layoutManager);
    recyclerView.addItemDecoration(new RV_Item_Spacing(5));
    FabricAdapter fabricAdapter=new FabricAdapter(ViewAdsCollection.getFabricAdsDetailsAsArray());
    recyclerView.setAdapter(fabricAdapter);

স্ক্রল করার সময় যখন রিসাইক্লারভিউ নীচে সবচেয়ে বেশি অবস্থানে পৌঁছায় তখন আমার জানতে হবে need এটা কি সম্ভব ? যদি হ্যাঁ, কিভাবে?




4
রিসাইক্লারভিউ। আমাদের এখানে যেতে হবে এমন প্যারামিটারটি কী হওয়া উচিত?
অ্যাড্রিয়ান

@Adrian, যদি আপনি এখনও এই প্রশ্নে আগ্রহী :)))) stackoverflow.com/a/48514857/6674369
আন্দ্রেই Antonov

উত্তর:


178

এটি করার একটি সহজ উপায়ও রয়েছে

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
        super.onScrollStateChanged(recyclerView, newState);

        if (!recyclerView.canScrollVertically(1)) {
            Toast.makeText(YourActivity.this, "Last", Toast.LENGTH_LONG).show();

        }
    }
});

দিকনির্দেশ পূর্ণসংখ্যা: -1 আপ আপ, 1 ডাউন ডাউন, 0 সর্বদা মিথ্যা ফিরে আসবে।


17
onScrolled () সনাক্তকরণটি দু'বার ঘটতে বাধা দেয়।
ইয়ান ওয়াম্বাই

আমি আমার রিসাইক্লারভিউতে স্ক্রোললিস্টনারভেন্ট যোগ করতে অক্ষম। OncrolStateChanged কোডটি কার্যকর করে না।
সন্দীপ যোহানস

4
যদি আপনি কেবল এটি একবার ট্রিগার করতে চান (একবার টোস্ট দেখান) যদি বিবৃতিতে বুলিয়ান পতাকা (একটি শ্রেণীর সদস্যের ভেরিয়েবল) যোগ করুন এবং এটির মতো করে সত্য হিসাবে সেট করুন: if (!recyclerView.canScrollVertically(1) && !mHasReachedBottomOnce) { mHasReachedBottomOnce = true Toast.makeText(YourActivity.this, "Last", Toast.LENGTH_LONG).show();}
bastami82

@ বাস্তমি 82২২ টোস্টের দু'বার মুদ্রণ রোধ করার পরামর্শ হিসাবে আমি কৌশলটি ব্যবহার করি তবে তা কার্যকর হয় না
বিশ্ব প্রতাপ

4
যোগ newState == RecyclerView.SCROLL_STATE_IDLEমধ্যে ifবিবৃতি কাজ করবে।
লি চুন হোয়ে

58

বারবার কল এড়ানোর জন্য এই কোডটি ব্যবহার করুন

    recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);

            if (!recyclerView.canScrollVertically(1) && newState==RecyclerView.SCROLL_STATE_IDLE) {
                Log.d("-----","end");
                
            }
        }
    });

4
আমি উত্তর দিতে চেষ্টা করেছি তবে এটি আমার পক্ষে সহজ এবং নিখুঁত। ধন্যবাদ
বিশ্ব প্রতাপ

@ ভেনকাটেশ স্বাগতম
মিলিন্দ চৌধুরী চৌধুরী

একমাত্র উত্তর যা আমাকে অন্য কোনও বাগ দেয় নি
দ্য ফ্লাফি টি রেক্স

@ দ্য ফ্লাফিটিআরএক্স ধন্যবাদ
মিলিন্দ চৌধুরী

46

আপনার পুনর্ব্যবহারযোগ্য দৃশ্যে কেবল একটি অ্যাডঅনস্ক্রোললিস্টনার () প্রয়োগ করুন। তারপরে স্ক্রোল শ্রোতার নীচে কোডটি প্রয়োগ করুন।

RecyclerView.OnScrollListener mScrollListener = new RecyclerView.OnScrollListener() {
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            if (mIsLoading)
                return;
            int visibleItemCount = mLayoutManager.getChildCount();
            int totalItemCount = mLayoutManager.getItemCount();
            int pastVisibleItems = mLayoutManager.findFirstVisibleItemPosition();
            if (pastVisibleItems + visibleItemCount >= totalItemCount) {
                //End of list
            }
        }
    };

4
আপনি কি এমআইএসলয়েডিং সম্পর্কে কিছুটা ব্যাখ্যা করতে পারেন দয়া করে? আপনি কোথায় সেট আপ করছেন বা মান পরিবর্তন করছেন।
মিগুয়েলহিনাপিসি

এমলোডিং হ'ল একটি বুলিয়ান পরিবর্তনশীল যা ইঙ্গিত করে যে ভিউটি নিযুক্ত আছে কি না। যেমন; যদি অ্যাপ্লিকেশনটি পুনর্ব্যবহারযোগ্য পর্যবেক্ষণ করছে, এম লোডিং সত্য হবে এবং তালিকাটি জনপ্রিয় হওয়ার পরে এটি মিথ্যা হয়ে যাবে।
ফেব্রু এম ফেলিক্স

4
এই সমাধানটি সঠিকভাবে কাজ করে না। স্ট্যাকওভারফ্লো
অ্যান্ড্রি আন্তোনভ

4
পদ্ধতি সমাধান করা যাবে না 'findFirstVisibleItemPosition'উপরandroid.support.v7.widget.RecyclerView
ইমান Marashi

4
@Iman Marashi, আপনি ঢালাই করা প্রয়োজন: (recyclerView.layoutManager as LinearLayoutManager).findFirstVisibleItemPosition()। এই কাজ.
বিটওয়ালে

16

উত্তরটি কোটলিনে রয়েছে, এটি জাভাতে কাজ করবে। আপনি অনুলিপি এবং পেস্ট করুন ইন্টেলিজি আপনার জন্য এটি রূপান্তর করা উচিত।

recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener(){

    override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {

        // 3 lines below are not needed.
        Log.d("TAG","Last visible item is: ${gridLayoutManager.findLastVisibleItemPosition()}")
        Log.d("TAG","Item count is: ${gridLayoutManager.itemCount}")
        Log.d("TAG","end? : ${gridLayoutManager.findLastVisibleItemPosition() == gridLayoutManager.itemCount-1}")

        if(gridLayoutManager.findLastVisibleItemPosition() == gridLayoutManager.itemCount-1){
            // We have reached the end of the recycler view.
        }

        super.onScrolled(recyclerView, dx, dy)
    }
})

এটি এর জন্যও কাজ করবে LinearLayoutManagerকারণ এটি উপরে একই পদ্ধতি ব্যবহার করে। যথা findLastVisibleItemPosition()এবং getItemCount()( itemCountকোটলিনে)।


6
ভাল দৃষ্টিভঙ্গি, তবে একটি ইস্যুতে লুপটি বহুগুণ কার্যকর করবে কিনা তার একটি বিবৃতি
বিষ্ণু

আপনি কি একই সমস্যার সমাধান পেয়েছেন
বিশ্ব প্রতাপ

4
@ বিষ্ণু একটি সাধারণ বুলিয়ান পরিবর্তনশীল এটি ঠিক করতে পারে।
দাকা

8

আমি উপরের উত্তরগুলি দ্বারা একটি নিখুঁত সমাধান পাচ্ছিলাম না কারণ এটি দ্বিগুণ এমনকি চালু হয়েছিল onScrolled

override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
            super.onScrolled(recyclerView, dx, dy)
           if( !recyclerView.canScrollVertically(RecyclerView.FOCUS_DOWN))
               context?.toast("Scroll end reached")
        }

4
তবে recyclerView.canScrollVertically(direction)দিকনির্দেশটি কেবল কোনও পূর্ণসংখ্যার + বনাম - সুতরাং এটি নীচে থাকলে 4 বা শীর্ষে থাকলে -12 এটি করতে পারে।
Xenolion

5

এটা চেষ্টা কর

আমি উপরের উত্তরগুলি ব্যবহার করেছি এটি যখন সর্বদা চালিত হয় আপনি পুনর্ব্যবহারযোগ্য দর্শনের শেষে যাবেন,

আপনি যদি একবারে যাচাই করতে চান তবে এটি নীচে রয়েছে কিনা? উদাহরণ: - আমার কাছে যদি 10 টি আইটেমের তালিকা থাকে আমি যখনই নীচে যাব তবে এটি আমাকে প্রদর্শন করবে এবং আবার আমি নীচে থেকে নীচে স্ক্রোল করলে এটি পুনরায় প্রিন্ট হবে না এবং আপনি যদি আরও তালিকা যুক্ত করেন এবং আপনি সেখানে যান তবে এটি আবার প্রদর্শিত হবে।

দ্রষ্টব্য: - আপনি যখন হিট এপিআইয়ের অফসেটটি মোকাবেলা করবেন তখন এই পদ্ধতিটি ব্যবহার করুন

  1. এন্ডলেসআরসাইক্লারভিউস্ক্রোললিস্টনার নামে একটি শ্রেণি তৈরি করুন

        import android.support.v7.widget.GridLayoutManager;
        import android.support.v7.widget.LinearLayoutManager;
        import android.support.v7.widget.RecyclerView;
        import android.support.v7.widget.StaggeredGridLayoutManager;
    
        public abstract class EndlessRecyclerViewScrollListener extends RecyclerView.OnScrollListener {
            // The minimum amount of items to have below your current scroll position
            // before loading more.
            private int visibleThreshold = 5;
            // The current offset index of data you have loaded
            private int currentPage = 0;
            // The total number of items in the dataset after the last load
            private int previousTotalItemCount = 0;
            // True if we are still waiting for the last set of data to load.
            private boolean loading = true;
            // Sets the starting page index
            private int startingPageIndex = 0;
    
            RecyclerView.LayoutManager mLayoutManager;
    
            public EndlessRecyclerViewScrollListener(LinearLayoutManager layoutManager) {
                this.mLayoutManager = layoutManager;
            }
    
        //    public EndlessRecyclerViewScrollListener() {
        //        this.mLayoutManager = layoutManager;
        //        visibleThreshold = visibleThreshold * layoutManager.getSpanCount();
        //    }
    
            public EndlessRecyclerViewScrollListener(StaggeredGridLayoutManager layoutManager) {
                this.mLayoutManager = layoutManager;
                visibleThreshold = visibleThreshold * layoutManager.getSpanCount();
            }
    
            public int getLastVisibleItem(int[] lastVisibleItemPositions) {
                int maxSize = 0;
                for (int i = 0; i < lastVisibleItemPositions.length; i++) {
                    if (i == 0) {
                        maxSize = lastVisibleItemPositions[i];
                    }
                    else if (lastVisibleItemPositions[i] > maxSize) {
                        maxSize = lastVisibleItemPositions[i];
                    }
                }
                return maxSize;
            }
    
            // This happens many times a second during a scroll, so be wary of the code you place here.
            // We are given a few useful parameters to help us work out if we need to load some more data,
            // but first we check if we are waiting for the previous load to finish.
            @Override
            public void onScrolled(RecyclerView view, int dx, int dy) {
                int lastVisibleItemPosition = 0;
                int totalItemCount = mLayoutManager.getItemCount();
    
                if (mLayoutManager instanceof StaggeredGridLayoutManager) {
                    int[] lastVisibleItemPositions = ((StaggeredGridLayoutManager) mLayoutManager).findLastVisibleItemPositions(null);
                    // get maximum element within the list
                    lastVisibleItemPosition = getLastVisibleItem(lastVisibleItemPositions);
                } else if (mLayoutManager instanceof GridLayoutManager) {
                    lastVisibleItemPosition = ((GridLayoutManager) mLayoutManager).findLastVisibleItemPosition();
                } else if (mLayoutManager instanceof LinearLayoutManager) {
                    lastVisibleItemPosition = ((LinearLayoutManager) mLayoutManager).findLastVisibleItemPosition();
                }
    
                // If the total item count is zero and the previous isn't, assume the
                // list is invalidated and should be reset back to initial state
                if (totalItemCount < previousTotalItemCount) {
                    this.currentPage = this.startingPageIndex;
                    this.previousTotalItemCount = totalItemCount;
                    if (totalItemCount == 0) {
                        this.loading = true;
                    }
                }
                // If it’s still loading, we check to see if the dataset count has
                // changed, if so we conclude it has finished loading and update the current page
                // number and total item count.
                if (loading && (totalItemCount > previousTotalItemCount)) {
                    loading = false;
                    previousTotalItemCount = totalItemCount;
                }
    
                // If it isn’t currently loading, we check to see if we have breached
                // the visibleThreshold and need to reload more data.
                // If we do need to reload some more data, we execute onLoadMore to fetch the data.
                // threshold should reflect how many total columns there are too
                if (!loading && (lastVisibleItemPosition + visibleThreshold) > totalItemCount) {
                    currentPage++;
                    onLoadMore(currentPage, totalItemCount, view);
                    loading = true;
                }
            }
    
            // Call this method whenever performing new searches
            public void resetState() {
                this.currentPage = this.startingPageIndex;
                this.previousTotalItemCount = 0;
                this.loading = true;
            }
    
            // Defines the process for actually loading more data based on page
            public abstract void onLoadMore(int page, int totalItemsCount, RecyclerView view);
    
        }
    
  2. এই ক্লাসটি এভাবে ব্যবহার করুন

         LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
            recyclerView.setLayoutManager(linearLayoutManager);
            recyclerView.addOnScrollListener(new EndlessRecyclerViewScrollListener( linearLayoutManager) {
                @Override
                public void onLoadMore(int page, int totalItemsCount, RecyclerView view) {
                    Toast.makeText(getActivity(),"LAst",Toast.LENGTH_LONG).show();
                }
            });
    

এটি আমার শেষে নিখুঁতভাবে চলমান, যদি আপনি কোনও সমস্যা পেয়ে থাকেন তবে আমাকে কমেন্ট করুন


এটি খুব সহায়ক ছিল :)
ডিভরথ

4

আমার বাস্তবায়ন আছে, এটি খুব কার্যকর StaggeredGridLayout

ব্যবহার:

private EndlessScrollListener scrollListener =
        new EndlessScrollListener(new EndlessScrollListener.RefreshList() {
            @Override public void onRefresh(int pageNumber) {
                //end of the list
            }
        });

rvMain.addOnScrollListener(scrollListener);

শ্রোতা বাস্তবায়ন:

class EndlessScrollListener extends RecyclerView.OnScrollListener {
private boolean isLoading;
private boolean hasMorePages;
private int pageNumber = 0;
private RefreshList refreshList;
private boolean isRefreshing;
private int pastVisibleItems;

EndlessScrollListener(RefreshList refreshList) {
    this.isLoading = false;
    this.hasMorePages = true;
    this.refreshList = refreshList;
}

@Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
    super.onScrolled(recyclerView, dx, dy);
    StaggeredGridLayoutManager manager =
            (StaggeredGridLayoutManager) recyclerView.getLayoutManager();

    int visibleItemCount = manager.getChildCount();
    int totalItemCount = manager.getItemCount();
    int[] firstVisibleItems = manager.findFirstVisibleItemPositions(null);
    if (firstVisibleItems != null && firstVisibleItems.length > 0) {
        pastVisibleItems = firstVisibleItems[0];
    }

    if (visibleItemCount + pastVisibleItems >= totalItemCount && !isLoading) {
        isLoading = true;
        if (hasMorePages && !isRefreshing) {
            isRefreshing = true;
            new Handler().postDelayed(new Runnable() {
                @Override public void run() {
                    refreshList.onRefresh(pageNumber);
                }
            }, 200);
        }
    } else {
        isLoading = false;
    }
}

public void noMorePages() {
    this.hasMorePages = false;
}

void notifyMorePages() {
    isRefreshing = false;
    pageNumber = pageNumber + 1;
}

interface RefreshList {
    void onRefresh(int pageNumber);
}  }

কলব্যাকে 200 মিলিসেকেন্ড বিলম্ব কেন?
মণি

@ মানি আমি এই মুহুর্তের ঠিক মনে নেই, তবে সম্ভবত আমি এটি কেবল মসৃণ প্রভাবের জন্যই করেছি ...
আলেকসি টিমোশেনকো

3

আমি এই প্রশ্নটি অনুসন্ধানও করেছিলাম তবে উত্তরটি আমাকে সন্তুষ্ট করার মতো সন্ধান পাই নি, তাই আমি পুনর্ব্যবহারযোগ্য ভিউয়ের নিজস্ব উপলব্ধি তৈরি করি।

অন্যান্য সমাধানগুলি কম সুনির্দিষ্ট তবে আমার। উদাহরণস্বরূপ: যদি শেষ আইটেমটি বেশ বড় হয় (প্রচুর পাঠ্য) তবে অন্যান্য সমাধানগুলির কলব্যাক অনেক আগে চলে আসবে তখন রিসাইক্লারভিউ বাস্তবের নীচে পৌঁছে গেল।

আমার সমাধান এই সমস্যাটি সমাধান করুন fix

class CustomRecyclerView: RecyclerView{

    abstract class TopAndBottomListener{
        open fun onBottomNow(onBottomNow:Boolean){}
        open fun onTopNow(onTopNow:Boolean){}
    }


    constructor(c:Context):this(c, null)
    constructor(c:Context, attr:AttributeSet?):super(c, attr, 0)
    constructor(c:Context, attr:AttributeSet?, defStyle:Int):super(c, attr, defStyle)


    private var linearLayoutManager:LinearLayoutManager? = null
    private var topAndBottomListener:TopAndBottomListener? = null
    private var onBottomNow = false
    private var onTopNow = false
    private var onBottomTopScrollListener:RecyclerView.OnScrollListener? = null


    fun setTopAndBottomListener(l:TopAndBottomListener?){
        if (l != null){
            checkLayoutManager()

            onBottomTopScrollListener = createBottomAndTopScrollListener()
            addOnScrollListener(onBottomTopScrollListener)
            topAndBottomListener = l
        } else {
            removeOnScrollListener(onBottomTopScrollListener)
            topAndBottomListener = null
        }
    }

    private fun createBottomAndTopScrollListener() = object :RecyclerView.OnScrollListener(){
        override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
            checkOnTop()
            checkOnBottom()
        }
    }

    private fun checkOnTop(){
        val firstVisible = linearLayoutManager!!.findFirstCompletelyVisibleItemPosition()
        if(firstVisible == 0 || firstVisible == -1 && !canScrollToTop()){
            if (!onTopNow) {
                onTopNow = true
                topAndBottomListener?.onTopNow(true)
            }
        } else if (onTopNow){
            onTopNow = false
            topAndBottomListener?.onTopNow(false)
        }
    }

    private fun checkOnBottom(){
        var lastVisible = linearLayoutManager!!.findLastCompletelyVisibleItemPosition()
        val size = linearLayoutManager!!.itemCount - 1
        if(lastVisible == size || lastVisible == -1 && !canScrollToBottom()){
            if (!onBottomNow){
                onBottomNow = true
                topAndBottomListener?.onBottomNow(true)
            }
        } else if(onBottomNow){
            onBottomNow = false
            topAndBottomListener?.onBottomNow(false)
        }
    }


    private fun checkLayoutManager(){
        if (layoutManager is LinearLayoutManager)
            linearLayoutManager = layoutManager as LinearLayoutManager
        else
            throw Exception("for using this listener, please set LinearLayoutManager")
    }

    private fun canScrollToTop():Boolean = canScrollVertically(-1)
    private fun canScrollToBottom():Boolean = canScrollVertically(1)
}

তারপরে আপনার ক্রিয়াকলাপ / খণ্ডে:

override fun onCreate() {
    customRecyclerView.layoutManager = LinearLayoutManager(context)
}

override fun onResume() {
    super.onResume()
    customRecyclerView.setTopAndBottomListener(this)
}

override fun onStop() {
    super.onStop()
    customRecyclerView.setTopAndBottomListener(null)
}

আশা করি এটি কাউকে সাহায্য করবে ;-)


4
অন্যদের সমাধানের কোন অংশটি আপনাকে সন্তুষ্ট করেনি? আপনার উত্তর দেওয়ার আগে আপনাকে প্রথমে এটি ব্যাখ্যা করা উচিত
জ্যাম ডুব

@ জামসঙ্ক কোস এর অন্যান্য সমাধানগুলি আমার থেকে কম সুনির্দিষ্ট। উদাহরণস্বরূপ, যদি শেষ আইটেমটি বেশ বিট হয় (অনেকগুলি পাঠ্য) তবে অন্যান্য সমাধানগুলির কলব্যাক অনেক আগে চলে আসবে তখন রিসাইক্লারভিউ রিয়েলটি নীচে পৌঁছবে। আমার সমাধান এই সমস্যাটি সমাধান করুন fix
অ্যান্ড্রি আন্তোনভ

2

এই থ্রেডের অন্যান্য উত্তরগুলির সাথে সন্তুষ্ট না হওয়ার পরে, আমি এমন কিছু কিছু পেয়েছি যা আমার মনে হয় ভাল এবং এটি এখানে কোথাও নেই।

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        if (!recyclerView.canScrollVertically(1) && dy > 0)
        {
             //scrolled to bottom
        }else if (!recyclerView.canScrollVertically(-1) && dy < 0)
        {
            //scrolled to bottom
        }
    }
});

এটি সহজ এবং আপনি যখন উপরে বা নীচে স্ক্রোল করে থাকেন তখন সমস্ত অবস্থার নীচে ঠিক এক সময় হিট হবে।


0

এটি আমার সমাধান:

    val onScrollListener = object : RecyclerView.OnScrollListener() {

    override fun onScrolled(recyclerView: RecyclerView?, dx: Int, dy: Int) {
        directionDown = dy > 0
    }

    override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
        if (recyclerView.canScrollVertically(1).not()
                && state != State.UPDATING
                && newState == RecyclerView.SCROLL_STATE_IDLE
                && directionDown) {
               state = State.UPDATING
            // TODO do what you want  when you reach bottom, direction
            // is down and flag for non-duplicate execution
        }
    }
}

আপনি কোথা থেকে পেলেন state ?
রাদিত্য গুমায়

রাজ্যটি আমার একটি এনাম, এটি সেই পর্দার জন্য রাষ্ট্রগুলি যাচাই করার জন্য এটি পতাকা (আমি আমার অ্যাপে ডেটাবাইন্ডিংয়ের সাথে এমভিভিএম ব্যবহার করেছি)
অ্যালেক্স জিজেকালো

ইন্টারনেট সংযোগ না থাকলে আপনি কীভাবে কলব্যাক বাস্তবায়ন করবেন?
Aks4125

0

অবস্থান পাওয়ার জন্য আমরা ইন্টারফেস ব্যবহার করতে পারি

ইন্টারফেস: শ্রোতার জন্য একটি ইন্টারফেস তৈরি করুন

public interface OnTopReachListener { void onTopReached(int position);}

ক্রিয়াকলাপ:

mediaRecycleAdapter = new MediaRecycleAdapter(Class.this, taskList); recycle.setAdapter(mediaRecycleAdapter); mediaRecycleAdapter.setOnSchrollPostionListener(new OnTopReachListener() {
@Override
public void onTopReached(int position) {
    Log.i("Position","onTopReached "+position);  
}
});

অ্যাডাপ্টার:

public void setOnSchrollPostionListener(OnTopReachListener topReachListener) {
    this.topReachListener = topReachListener;}@Override public void onBindViewHolder(MyViewHolder holder, int position) {if(position == 0) {
  topReachListener.onTopReached(position);}}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.