2011-07-05 20 views
4

私は、あなたが右に移動してリストビューがフォーカスを失ったときに、アプリケーションでナビゲートするためにDパッドまたはトラックボールを使用すると、リストビューがフォーカスを取り戻したときに、最後に焦点を当てたものよりも焦点がある。私はonFocusChange(...)を使ってどの子にフォーカスがあるかを保存しようとしましたが、フォーカスが失われるまで呼び出されないように見えます。誰がフォーカスを持っているのかを把握する方法があるので、リストビューが再びフォーカスを取得したら、私はrequestFocus()を子に呼び出すことができますか?最後にフォーカスがあった子を取得する

残念ながら私はハンドラを使用できません。これはあまり使われていない機能で、小さな機能のためにパフォーマンスを犠牲にしたくないからです。

ここで私はそれが動作しませんでしたコードは(focusedViewはどんな常にnullませんでした):

mainListView.setOnFocusChangeListener(new OnFocusChangeListener() { 

     public void onFocusChange(View v, boolean hasFocus) { 
      if(focusedView == null) { Log.i("focus", "focusedView == null"); } 
      if(hasFocus && focusedView != null) { 
       Log.i("focus", "Focus has been Recieved............."); 
       focusedView.requestFocus(); 
      } else { 
       // Focus has been lost so save the id of what the user had selected 
       Log.i("focus", "Focus has been Lost............."); 
       focusedView = mainListView.findFocus(); 
      } 
     } 
    }); 

ありがとう!

答えて

2

フォーカスのリスナーがフォーカスを失った後に呼び出されているため、自分の答えでフォーカスしていると思います。子にフォーカスがないため、.findFocus()はnullを返します。

私は、ListViewクラスを拡張し、onFocusChangedメソッドをオーバーライドすることをお勧めします。基本的には、あなたがやっていることをやってみましょう。 findFocus()関数は、物事をめちゃくちゃにされた以外の仕事を

@Override 
protected void onFocusChanged (boolean gainFocus, 
    int direction, Rect previouslyFocusedRect) { 
    if(gainFocus) 
     focusedView = mainListView.findFocus(); 

} 

This one

+0

。 findFocusはlistViewにフォーカスを戻し、onFocusChanged(..)をもう一度呼び出してフォーカスを移動させないように見えます。あなたはこの問題について私が何をすることができるかについての洞察を持っていますか?これまでのご協力ありがとうございます。 – FuegoFingers

+2

あなたはそれをリストビューに戻していると言うので、私はあなたがfindFocus()を呼び出すのは、gainFocusがfalseの場合です(ドキュメンテーションはビューにフォーカスがあればtrue、そうでなければfalse)。私は試してみると、基本的に、ビューにfocus focusFocus == trueがあって、最後のものが記録されていれば、それを逆に近づけます。次に、あなたのsetOnFocusChangeListenerリスナーで、フォーカスが得られたら、最後に知っている子にフォーカスを設定します。私はあなたを誤解しているかもしれません。あなたはすでにこれをやっていますが、フォーカスは子どもからリストに移されています。それは事実ですか? – JustDanyul

+0

@FuegoFingersはあなたがそれを解決した場合、解決策を投稿できますか?私は同じsitutaionに直面している!!私はJustDanyulソリューションを実装しようとしています – r4jiv007

関連する問題