5

この問題は、しばらくの間私を悩ませてきました。リスト ビューがあり、各行には、ユーザーがデータを入力できる 3 つの EditText があります。ユーザーが編集ボックスを選択すると、テキストが選択される必要があるため、最初のキーを入力すると、前のテキストが削除されます。

これはすべて、selectAllOnFocus オプションを true に設定すると完全に機能します。問題は、notifyDataSetChanged を呼び出さなければならないときに発生します。行を削除するボタンが各行にあり、それはアダプタの notifyDataSetChanged メソッドを呼び出すときです。その後、ユーザーが EditBox を選択すると、テキスト全体が選択されるのではなく、カーソルがテキストの左側に移動し、カーソルの下に矢印が表示されます。

コードとレイアウト ファイルで selectAllOnFocus を設定しようとしましたが、うまくいきませんでした。

何を試すべきですか?何か不足していますか?

フォーカス変更イベントを無効にしてみましたが、うまくいきませんでした。

ありがとう!

4

2 に答える 2

0

達成しようとしている予想される動作は何ですか?

編集:

2 回のクリック イベントを手動で発生させてみませんか。それは少しハックな解決策ですが、誰が気にするよりも機能する場合。できることは、テキストを選択したいリストビューからビューを取得し、投稿で2回のクリックを開始することです

myEdit.post(new Runnable(){

    public void run() 
  {
    myEdit.performClick();
    myEdit.performClick();
  }

}

投稿を使用すると、リストビューアダプターで無効化を呼び出した後、ビューが再膨張した後にイベントが発生したことを確認できます

于 2013-08-14T21:30:18.913 に答える
0

これは adapter.notifyDataSetChanged() を呼び出すたびに発生していたので、回避する必要があると考えました。そして、これは私がやったことです:

adapter.clear();     
adapter = new AdapterOfWhateverItemsTypeIs(this, items);
listview.setAdapter(adapter);   
adapter.notifyDataSetChanged();

この後、EditText の selectAllOnFocus オプションの期待どおりの動作が得られました。

于 2013-08-19T14:50:02.590 に答える