1

基本的に、ユーザーがリストヘッダーに触れて実行されたときに、リストビューのスクロールを無効にしようとしていますMotionEvent.ACTION_MOVE

なぜこのクレイジーな実装なのか疑問に思っているのなら?-私は基本的にlistViewヘッダーにカスタムシークバーを構築しています。これは機能しMotionEvent.ACTION_MOVEます。ビューはリストビューのヘッダーであるため、ユーザーがこのカスタムヘッダービューからタッチを解除するまでスクロールしないでください。

だから私の質問/問題はです。

今のところ私は2つのJavaクラスを持っています。アクティビティ(このリストビューがあります)とカスタムヘッダー(View実装OnTouchListener)。

  1. ヘッダービューがこのリストビュー(アクティビティ)にタッチされたときに値を渡してスクロールを無効にするにはどうすればよいですか?
  2. ここでdispatchTouchEvent述べたように、リストビューのスクロールはオーバーライドすることで無効にできるようです。私はカスタムlistViewではないので、アクティビティクラス自体で無効にすることは可能ですか?

申し訳ありませんが、私は学習中ですので、私の新しさを気にしないでください。

4

1 に答える 1

1

さて、私は私が尋ねた質問について少し静かになりました、それで私は私の質問の前半に答えています。

ヘッダービューがこのリストビュー(アクティビティ)にタッチされたときに値を渡してスクロールを無効にするにはどうすればよいですか?

を作成することで解決策を得ましたinterface。そこで、メソッドpublic static interfaceを持つを作成しました。public void headerTouched(Boolean touchEvent);のコードを持つ私のクラスlistViewimplementerなので、インターフェイスクラスからこのメソッドを自動的にオーバーライドします。booleanこのクラスでは、ドライバークラスから返されたブール値をリッスンするプライベート変数(私の場合は:)を作成します。私のドライバークラスは、このインターフェイスオブジェクトを持つHeaderViewであり、それを介して値を設定します。インターフェースの初心者を助けるために、私は以下に私のコードを投稿しました。

インターフェイスクラス

public static interface HeaderTouchListener{
    public void headerTouched(Boolean touchEvent);
}

実装者クラス

private boolean headerTouched = false;
public void headerTouched(Boolean touchEvent) {
    headerTouched = touchEvent;
}

ドライバークラス

HeaderTouchListener touchListner = new ImplementerClassName();
touchListner.headerTouched(true);

リストビューでスクロールを無効にする方法がまだわかりません。詳細については、この質問に従ってください。カスタムリストビュークラスを作成せずに、リストビューのdispatchTouchEventを設定します。(スクロールを無効にするため)

于 2012-07-11T06:48:06.923 に答える