2

リスト ビューの 1 つのセクションに EditText ボックスのリストを設定する Expandable ListView In android を実装しました。EditText ボックスに値を入力しています。正しい方法で値が取得されます。しかし問題は、リストの最後の EditText ボックスに値を入力すると、その値が最初の EditText ボックスにコピーされることです。

最後のEditTextボックスに値を入力して戻るボタンを押すと、リストの最初のEditTextボックスにフォーカスが移動し、スクロールアップまたはスクロールダウンすると、最後のEditTextボックスの値が最初のEditTextボックスにコピーされます。ビューで。

何が起こっているのかわからない?

holder.editText.setOnFocusChangeListener(new OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (!hasFocus) {
            Position position = (Position) v.findViewById(R.id.editTextField).getTag();                     
            if (res != null) {
                res.Value = ((EditText) v).getText().toString();
                Toast.makeText(mContext, res.Value,Toast.LENGTH_SHORT).show();
                setEditTextResult(res);
            }
        }
    }
});
4

1 に答える 1

0

これに対する答えを得ました。

戻るボタンを押した後に編集テキストがフォーカスから外れるように、この方法でコードを記述する必要があります。コードは実装によって異なるため、コーディング ソリューションを提供していません。EditText ボックスがコード内の別の場所にフォーカスを要求する場合は注意が必要です。時々このバグを引き起こします。Android のこのバグでは、アダプターがビューの現在のアイテムのみをメモリに保持します。EditText ボックスから値が削除され、値が他の EditText ボックスにコピーされるというバグが発生します。

必要なのは、EditText ボックスがフォーカスを要求している別の場所にあるかどうかに注意することだけです。これが重要です。

于 2013-02-05T06:01:26.550 に答える