2012-02-23 8 views
0

実際には、ListFragmentのListViewOnActivityCreatedに作成されていると思いました。ListFragmentのListViewの各行にOnTouchListenerを追加する

@Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

     ...initialize the namesList 

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), 
     android.R.layout.simple_list_item_1, namesList); 
    setListAdapter(adapter); 

    } 

は、その後、私は(=子供)リストの各行にOnTouchListenerを追加するonResumeListViewアクセスがまだリストビューに追加子が存在しない - それらが原因上記のコードであるべきであるにもかかわらずonActivityCreatedで期待するはずです。

@Override 
    public void onResume() { 
    super.onResume(); 
    ListView lv = getListView(); 
    int n1 = lv.getChildCount(); 
    for (int ii = 0; ii < n1; ii++) { 
     View lineV = lv.getChildAt(ii); 
     lineV.setOnTouchListener(new MyTouchListener()); 
    } 

    } 

最後に、OnTouchListenerを追加するチャンスはOnListItemClickです。 (前リストビューで子が存在しないので)

@Override 
    public void onListItemClick(ListView l, View v, int position, long id) { 
    v.setPressed(false); 

    ListView lv = getListView(); 
    int n1 = lv.getChildCount(); 
    for (int ii = 0; ii < n1; ii++) { 
     View lineV = lv.getChildAt(ii); 
     lineV.setOnTouchListener(new MyTouchListener()); 
    } 

    } 

しかし、ここでもOnTouchListenersはまだ表示ラインに追加されていません。

表示された名前リストのいくつかの行に数回タッチすると、最後にOnTouchListenerが追加され、タッチを傍受します。

しかし、それまでは普通のonListItemClickがタッチをキャッチしています。これは私が起こりたくないものです。

私に必要なのは、私は私がやりたいの代わりに、OnListItemClickがイベントを処理させることができるようにリストが表示されたときに最初からListViewに各行にOnTouchListenersを追加することです。

(私は実際にラインを押しながら周りの線をドラッグしたい - OnListItemClickラインがそのままされた後にのみ開始)

多くの感謝!

答えて

0

私はリストビューの各行にリスナーを追加するという点でこれまで同様のことをしました。

あなたが行う必要があるのは、ArrayAdapterのサブクラスを作成することです。次に、getView()メソッドで、MyTouchListenerをonTouchListenerとしてビューに設定してから、ビューを返します。

1

オーバーライドonViewCreatedとそこ

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    ListView listView = getListView(); 
    MyListViewTouchListener touchListener = 
     new MyListViewTouchListener (listView); 
    listView.setOnTouchListener(touchListener); 
} 
をあなたのリスナーを追加します
関連する問題