0

私はアダプターを書いています

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >
...
    <EditText
        android:id="@+id/weight"
        android:layout_width="55dp"
        android:layout_height="wrap_content"
        android:layout_marginRight="15dp"
        android:ems="10"
        android:inputType="number"
        android:textSize="14sp" >
    </EditText>
...
</LinearLayout>

そしてそれを私のリストに追加しました。アダプターでは、以下のコードのように EditText を重み付けするために textWatcher を追加しました

    holder.weight.addTextChangedListener(new TextWatcher() {
        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
        }

        @Override
        public void afterTextChanged(Editable s) {
            if (s.length() != 0)
                try {
                // ... 
                } catch (IndexOutOfBoundsException e) {
                    Log.e(TAG, e.toString());
                }

        }
    });

しかし、リストの行を選択して EditText の数値を変更すると、EditText とキーボードがデフォルトとして設定され、EditText をもう一度選択すると、すべてがうまく機能します。フォーカスがジャンプしないように修正するにはどうすればよいですか?

4

1 に答える 1

0

よくわかりませんが、フォーカスが変わったらこれを試してください

holder.qty.setOnFocusChangeListener(new View.OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
    // TODO Auto-generated method stub
    final EditText qty = (EditText) v;
    qty.setFocusableInTouchMode(true);
    qty.setFocusable(true);
    StaticData.cartdata.get(position).qty = qty.getText().toString();
}

});

于 2012-10-23T10:31:30.903 に答える