2012-04-11 33 views
0

私はのフッタとしてViewを使用していますEditTextがあります。私は、フォーカスにアクセスしようとしている/フォーカスイベントを失うが、何らかの理由で、フォーカスごとに複数回発射している。ここで何が起こっているのですか?Android - ListView EditTextフォーカスの問題

// in onCreate 

// ... 

// the footer 
View v = getLayoutInflater().inflate(R.layout.comment_edittext, null); 

EditText commentEditText = (EditText)v.findViewById(R.id.comment_edittext); 
commentEditText.setOnFocusChangeListener(new OnFocusChangeListener() { 

    @Override 
    public void onFocusChange(View v, boolean hasFocus) 
    { 
     U.log("View: " + v.getClass().getName().toString()); 

     if(hasFocus) 
     { 
      U.log("Clicked"); 
     } 
     else 
     { 
      U.log("Un Clicked"); 
     } 
    } 
}); 

// add the footer 
commentListView.addFooterView(v); 

// ... 

キーボードが表示されますワンタッチの出力は、次のとおりです。

04-11 10:22:17.449: E/004 - X(4576): View: android.widget.EditText 
04-11 10:22:17.459: E/004 - X(4576): Clicked 
04-11 10:22:17.569: E/004 - X(4576): View: android.widget.EditText 
04-11 10:22:17.569: E/004 - X(4576): Un Clicked 
04-11 10:22:17.569: E/004 - X(4576): View: android.widget.EditText 
04-11 10:22:17.569: E/004 - X(4576): Clicked 
04-11 10:22:17.689: E/004 - X(4576): View: android.widget.EditText 
04-11 10:22:17.689: E/004 - X(4576): Un Clicked 
04-11 10:22:17.709: E/004 - X(4576): View: android.widget.EditText 
04-11 10:22:17.709: E/004 - X(4576): Clicked 

私は種類のそれはtruehasFocusセットで複数のイベントを呼び出す理解し、なぜ、その後もありますすることができますfalse s、Un Clickedログをトリガーしますか?

編集:私は、ビューのうち、EditTextを動かし、上下ListViewをスクロールするたびはさらに、それは同様にこれらのイベントを呼び出します。おそらく間違ったリスナータイプを使用していますか?

+0

私の推測では、あなたのonCreateメソッドは何回か呼び出されます。 – njzk2

答えて

1

個人的な経験から、ListView内のEditTextsはベーンです。ビューがリサイクルされレンダリングされる方法のために、フォーカスが不思議に動作します。問題に近づくことをお勧めします。実際には、それがコメントのテキストボックスであれば、それは常に見えていた方が良いでしょうか?

サンプルレイアウト:

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <ListView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1"/> 
    <EditText 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"/> 
    </LinearLayout> 
+0

私の最初の試みは、レイアウトのXMLファイルのListViewの後に配置することでした。しかし、それはレンダリングされませんでしたので、私はListViewの下向き拡張と関係があると考えました。それをする方法があれば、私はそれを公開するだろう。 – Josh

+0

私はまったく同じ目的のために使用するレイアウトを追加しました。 – dmon

1

代わりに、GridViewコントロールを使用し、あなたはそれがあなたのJavaクラスに読み込む方法が気に入らない場合は1のnumColumnsのを与える、AbsListViewとして保存(と同じようにそれらを保ちますあなたのXMLのGridView)。

ListViewはEditTextでバグがあり、GridViewsにはそのような問題がありません。

+0

違いを見ることなくこれを試してみました – Joakim

0

numColumnsが1のGrideviewを使用すると、問題を解決するのに最適な方法です。私はそれを試み、私の問題を解決しています。

関連する問題