Как узнать видимый элемент в recyclerview? - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь реализовать recyclerview, и когда последний элемент виден, мне нужно сделать новый запрос несколько раз, но я не могу узнать, как я могу узнать, отображается ли последний элемент. Есть предложения?

1 Ответ

0 голосов
/ 09 июля 2020

Чтобы узнать, когда отображается последний элемент, вы должны реализовать RecylerView.OnScrollListener и каждый раз, когда список прокручивается, запрашивать позицию последнего видимого элемента на экране:

Kotlin

recyclerView.addOnScrollListener(object: RecyclerView.OnScrollListener() {
    override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
        super.onScrolled(recyclerView, dx, dy)
        val linearLayoutManager = recyclerView.layoutManager as LinearLayoutManager
        val lastVisiblePosition = linearLayoutManager.findLastVisibleItemPosition()
 
        if (lastVisiblePosition == dataList.size) {
            // perform network request
        }
    }
})

Java

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);
        LinearLayoutManager linearLayoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
        int lastVisiblePosition = linearLayoutManager.findLastVisibleItemPosition();
        
        if (lastVisiblePosition == dataList.size()) {
           // perform network request
        }
    }
})

Используйте findLastCompletelyVisibleItemPosition() вместо findLastVisibleItemPosition(), если вам нужно проверить, когда последний элемент полностью виден.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...