1

インライン編集用に ListView 内に EditText があります。ユーザーはその値を変更でき、値は SQLite データベースに保存されます。

ListView の作成にカスタム DataAdapter を使用しています。

リストビューには 15 行あります。一度に 4 行が表示されます。他の行を表示するには、スクロールバーを使用します (上/下)

問題: ListView が初めて読み込まれます。ユーザーは、各 EditText の EditText 1、2、3、4 に書き込みます。スクロールバーが下に移動し、ユーザーがすべての行に 1 つずつデータを入力します。ユーザーがスクロールバーを上に動かして最初の 4 行を表示すると、4 行目には 4 ではなく間違ったデータが表示され、ユーザーが最後に入力した値である 14 が表示されます(または、10/ 13/11など)

私のカスタム DataAdapter クラスでは、以下に示すように、EditText がフォーカスを失ったときに、ユーザー入力をデータソースに格納しています。

public View getView(int position, View convertView, ViewGroup parent) {
//txtComments is an EditText 
holder.txtComments.setId(position);
holder.txtComments.setOnFocusChangeListener(new OnFocusChangeListener() {
    public void onFocusChange(View v, boolean hasFocus) {
    if (!hasFocus){
        final int position = v.getId();
        final EditText tempComments = (EditText) v;
             // items: the DataSource for the listView
        items.get(position).Comments = tempComments.getText().toString();
    }
    }
});
}

ここに画像の説明を入力

編集:

TEXTWATCHER も試しましたが、うまくいきません。

広範なテストの後。この問題はランダムに発生することがわかりました。たとえば、ExitText11 が間違った値を表示したり、ExitText4 が間違った値を表示したり、両方とも間違った値を表示したり、スクロールバーを上下に移動するとこの動作が変化したりします。

4

0 に答える 0