2016-07-17 4 views
1

私はlistViewを持っています。各リスト項目はクリック可能です。各リストアイテムは、それ自身でレイアウトされています。ポップアップが解除されたときにリストビューでタッチイベントを処理する方法

ボタンを押すと、listViewの上にpopupWindowが表示されます。私はListViewコントロールにpopupWindowの外に触れたときに今、私の問題がある私の希望の行動が他の存在はクリックをさせた場合にだけポップアップを却下することであるのに対し、AndroidはListView項目

のクリックリスナーを実行

popupWindow.setOutsideTouchable(true); 
    popupWindow.setBackgroundDrawable(new BitmapDrawable(getResources(), "")); 
    PopupWindow.OnDismissListener dismissListener = new PopupWindow.OnDismissListener(){ 
     @Override 
     public void onDismiss() { 
       popWindowVisible = false; 
       popwindow_dim_bg.setVisibility(View.GONE); 

     } 
    }; 
    popupWindow.setOnDismissListener(dismissListener); 

を設定していますスルーしてください。

私はリストビューでsetOnTouchListener(return true)を試しましたが、それは助けになりませんでした。

この問題を解決するお手伝いをしてもらえますか?

答えて

1

私が知る限り、ダイアログの外をクリックすると、ビューがあればビューのonclickリスナーが実行されます。

それを上書きするためには、次の操作を行う必要はありますブールフラグ

を使用します。

  1. ブールisDialogOpen =偽;ボタンクリックイベント内の

  2. は、onDismiss内側=真

  3. があなたのListView項目のクリックでisDialogOpen = falseを

  4. を設定isDialogOpenを設定し、(!isDialogOpen) 場合であればブロック

    を追加{

    //ここにあなたのもの ....

    }

+0

ありがとう私はすでにそれをしました。しかし、このアプローチにはいくつかの問題があります。私はupvoteしますが受け入れません – GJain

+0

あなたは問題が何かを共有してもらえますか? –

+0

so ... dismisslistenerはclicklistenerの前に実行されます。したがって、ブール値フラグは、clickListenerが実行されると常にfalseになります。だから私は、クリーンな解決策ではない遅れを持つことによって問題を回避しなければならなかった。 – GJain

関連する問題