1
私は、線形レイアウトでedittextとlistviewを持っています。現在、合計で10のリストに5つの結果が表示されています。リストビュー、リストビューの5番目のアイテム(私は常にその最後のものと思われます)は、最初のアイテムの代わりにフォーカスを取得します!私はこれをどのように解決すべきですか?listviewの最初の項目はフォーカスを取得しません
私は、線形レイアウトでedittextとlistviewを持っています。現在、合計で10のリストに5つの結果が表示されています。リストビュー、リストビューの5番目のアイテム(私は常にその最後のものと思われます)は、最初のアイテムの代わりにフォーカスを取得します!私はこれをどのように解決すべきですか?listviewの最初の項目はフォーカスを取得しません
1)アクティビティのフィールドとして、ハンドラを作成します。このように:
private Handler myHandler = new Handler();
2)ListViewを作成するときは、次のようにOnFocusChangeListenerを追加します。
myList.setOnFocusChangeListener(new View.OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
myHandler.postAtFrontOfQueue(new Runnable() {
public void run() {
myList.setSelection(0);
}
});
}
}
});
これは動作しますが、これは私が推測すると高価な呼び出しです。 "このメソッドは非常に特殊な状況での使用のためだけです - メッセージキューを枯渇させたり、注文の問題を引き起こしたり、予期しない副作用を引き起こしたりすることがあります。それ? –
ハンドラを他のルーチンと共有すると、ListViewに焦点を当てた問題を解決できないので、実際にはこのメソッドの使用について心配する必要があります。したがって、この目的のためだけに作成されたハンドラを使用することをお勧めします。そのようにするとキューの問題が発生しません。 –
このソリューションは、エレガントではありません。直面している場合、ListViewのフォーカス動作は既定で行うか、その目的のために特定のプロパティが必要です。今のところこれは私の提案です。 –