1

私は、.Net の世界から来た Java/Android を学習する目的で作成した単純なアプリを持っています。このアプリには ListView があります。ListView はコレクションにバインドされ、必要に応じてすべてを表示します。ユーザーがナビゲートできる次と前のボタンがあり、これらも同様に機能します。

私が止めたいのは、ユーザーがリストをスクロールする機能です。ナビゲーションボタンを使ってもらいたい。ユーザーがスクロールしたときに発生するイベントがあるに違いないと考えていました。私はそのイベントを傍受し、ただ「飲み込む」つもりでした。これらのイベントを探していると、SetScrollContainer(false) に出会いました。問題は、何もすることが重要ではないように見えることです。私はまだできますscroll vertically

したがって、SetScrollContainerイベントをインターセプトするか、別のオプションを使用するかどうかの最終的な質問は、ListView でユーザーのスクロールを無効にする最善の方法ですか?

また、継承のように聞こえるカスタム ListView を実装するというあいまいな記事にも出くわしました。私はコンセプトに満足していますがandroid & java、この複雑さが本当に必要かどうかはわかりません。

ティアJB

以下のコメントで説明されているコード:

//Get a handle on our ListView
lstvw_LiftData = (ListView)findViewById(R.id.lstvw_LiftData);

lstvw_LiftData.setOnTouchListener(new OnTouchListener() 
  {

      public boolean onTouch(View v, MotionEvent event) 
      {
          if (event.getAction() == MotionEvent.ACTION_MOVE) 
          {
              return true; // Indicates that this has been handled by you and will not be forwarded further.
          }
          return false;
      }
  }
);

setOnTouchListener エラー

4

1 に答える 1

2

私が小さなテストプロジェクトで書いたコードは、リストビューでのスクロールを無効にするために機能します:

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ListView lv = (ListView) findViewById(R.id.listV);
        String[] items = new String[10];

        for (int i = 0; i < 10; i++) {
            items[i] = "Item " + (i+1);
        }
        lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items));
        lv.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_MOVE) {
                    return true;
                }
                return false;
            }

        });
    }
}

楽しむ。

KR

于 2012-11-12T15:38:43.613 に答える