2017-01-16 12 views
1

私はプルダウンリフレッシュオプションをユーザーに提供するために、トップ親ノードとしてスワイプリフレッシュレイアウトをアタッチしました。リードを下にスクロールしてプルダウンリフレッシュオプションを有効にする

私がスクロールすると、スクロールできなくなり、自動的にプルダウンオプションの読み込みが開始されます。

私は同じ問題に関するいくつかのスタックオーバーフローの問題を検索しました。彼らはスクロールを聞いて、リストビューの現在のインデックスに基づいてプルダウンオプションを無効にすると言っている。

私はそれを聞こうとしました。しかし私はスクロールするときにどんなイベントも聞くことができません。

私のリストビューオブジェクト:

mListView = (ListView) getView().findViewById(android.R.id.list); 

は誰も私を助けてくださいすることができます。他の興味深い解決策や回避策。

答えて

5

私はこのようにそれを行なったし、それが完璧に働いている:

class YourActivity extends AppCompatActivity implements ViewTreeObserver.OnScrollChangedListener { 
@Override 
protected void onStart() { 
    super.onStart(); 
    mListView.getViewTreeObserver().addOnScrollChangedListener(this); 
} 

@Override 
protected void onStop() { 
    super.onStop(); 
     mListView.getViewTreeObserver().removeOnScrollChangedListener(this); 
} 


@Override 
public void onScrollChanged() { 
    if (mListView.getFirstVisiblePosition() == 0) { 
     swipeRefresh.setEnabled(true); 
    } else { 
     swipeRefresh.setEnabled(false); 
    } 
} 
} 

は、これが役立つことを願っています。私の場合は

+1

ありがとう@Mohanand。素晴らしいです...代わりにgetScrollY()私はgetFirstVisiblePosition()を使用しています。その完璧に動作します。あなたは私の時間を救った。ありがとう... – Vji

+0

getFirstVisiblePosition()がうまくいくということは真実です。ようこそ: –

+0

HI Mohanad。もう1つ質問があります。レイアウトの最初の要素が表示されたら、スワイプのリフレッシュレイアウトを有効または無効にする必要があるときに、レイアウトにリストビューがないと考えてください。どのように実装することができますか? – Vji

1

私はNestedScrollViewによってScrollviewを変更することで問題を解決しました。

NestedScrollViewに切り替えた後、正常に動作しました。

関連する問題