2016-10-14 1 views
-1

У меня проблема со свитком моего фрагмента. Я хочу, чтобы загрузка добавила еще одну часть списка, когда пользователь дошел до конца фрагмента.setOnScrollListener не работает правильно, я не знаю, когда пользователь находится в конце списка

Фрагмент один:

View inflatedView = inflater.inflate(R.layout.tab1, container, false); 
list = (ListView) inflatedView.findViewById(R.id.list); 
... 
MainActivity.Adapter adapter = new MainActivity.Adapter(getActivity().getApplicationContext(), R.layout.row, result); 
list.setAdapter(adapter); 
list.setOnScrollListener(adapter); 
list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

класс Adapter:

public static class Adapter extends ArrayAdapter implements AbsListView.OnScrollListener { 
.... 
@Override 
public void onScrollStateChanged(AbsListView view, int scrollState) { 
     Toast.makeText(getContext().getApplicationContext(), "one", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
     Toast.makeText(getContext().getApplicationContext(), "two", Toast.LENGTH_SHORT).show(); 
    } 
} 

Эта функция не работает, когда я иду в конце страницы. Где ошибка?

+0

http://stackoverflow.com/questions/6358428/implementation-of-onscrolllistener-to-detect-the-end-of-scrolling-in-a-listview – USKMobility

+0

жаль не работает для меня! – Helpme

ответ

0

Я бы использовал список RecyclerView и добавил к нему прослушиватель прокрутки. Вам нужно сохранить ссылку на диспетчер компоновки в представлении recycler.

private LinearLayoutManager layoutManager; 
private RecyclerView.OnScrollListener recyclerViewOnScrollListener = new RecyclerView.OnScrollListener() { 
    @Override 
    public void onScrollStateChanged(RecyclerView recyclerView, int newState) { 
     super.onScrollStateChanged(recyclerView, newState); 
    } 

    @Override 
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
     super.onScrolled(recyclerView, dx, dy); 
     // don't load more unless actually scrolled 
     if (dx == 0 && dy == 0) { 
      return; 
     } 
     int visibleItemCount = layoutManager.getChildCount(); 
     int totalItemCount = layoutManager.getItemCount(); 
     int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition(); 
     // load more items depending on visible items and total 

    } 
}; 
+0

Что такое mLayoutManager? – Helpme

+0

Должно быть, «layoutManager». Я обновил. Это менеджер компоновки, который вы используете для recyclerview при настройке. Код настройки recyclerview не включен в мой ответ. –

Смежные вопросы