2016-10-14 8 views
-1

私の断片のスクロールに問題があります。 ユーザーがフラグメントの最後に到着したときに、リストの別の部分を追加したいです。setOnScrollListenerが正常に動作しないユーザがリストの最後にいるときを知らない

フラグメント1:

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() { 

クラスアダプタ:私はページの最後に行くとき

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を使用し、その上にスクロールリスナーを追加します。リサイクラビューでは、レイアウトマネージャへの参照を保持する必要があります。

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設定コードは含まれていません。 –

関連する問題