で位置posにオブジェクトを更新しますUPDATのmthodを持っていることを確認し、私は結合双方向のデータを達成することができました私の行のViewの各コントロールにKeyListenerとOnFocusChangeListenerを追加します。これらの両方のイベントは、ビューのすべてのコントロールをループし、現在の値でアダプタのデータを更新するために、私の行のViewで作成したメソッドに呼び出されます。 notifyDataSetChanged()を呼び出さないようにする必要がありました。このメソッドは、データソースオブジェクトをプログラムによって変更し、UIに変更を反映させる場合にのみ必要です。
これまでで最も効率的な方法ではありませんが、うまく機能します。
もう1つ注意すべきことは、行の追加と削除私は、アダプタビューの更新のコントロールレベルとビューレベルスケルチングの両方を設定する必要がありました。削除の場合は、行のビューに長いクリックイベントを追加して削除オプション付きのメニューを作成しました。その後、データソースオブジェクトをプログラムで編集して、指定された行データを削除し、notifyDataSetChanged()を呼び出します(そうでなければ、OSは例外をスローします)。ここでスクエッチすると、私のイベントに当たって無限ループに陥ることがなくなり、データが正しく同期されます。その後、削除された行ビューで、自分のコントロールをすべて設定してイベントのアップデートアダプターをスケルチします。削除された行ビューにはまだフォーカスがあり、データソースオブジェクトをUIにない値で更新しないようにしたいからです。私のアダプタのgetView()のListViewリサイクルプロセスから行のViewを取得すると、このフラグは反転されます。
新しい行を追加するには、行の表示レベルだけでスケルチする必要があります。これは、プログラムでデータソースを新しい空のデータ行で変更し、notifyDataSetChangedを呼び出すためです。理由は削除とまったく同じです。
ListViewでどのように値を編集していますか?データセットを変更してnotifyDataSetChanged()を呼び出すと、ListViewアイテムにデータを入力するだけでよいのです。 – LeffelMania