リストビューの各アイテムは、ユーザーが編集できるEditTexts
で構成されています。目標は、ユーザーが特定の編集テキストにフォーカスすると、挿入した値がRealm
データベースに保存されることです。レルムを持つ編集可能なリストビューアイテム
リストに空のアイテムを追加すると効果的ですが、データの実際の保存は私が苦労しているものです。私が何をしたか
:アダプターで
は、私がedittextsのそれぞれにonFocusChangeListener
を追加しました。しかし、私はこの特定の行またはオブジェクトのデータを保存することはできません。
アダプターからのアイテムの位置がありますが、位置によってRealmObject
にアクセスすることはできません。
マイコード:
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder viewHolder;
if (convertView == null) {
convertView = inflater.inflate(R.layout.row_exercise, parent, false);
viewHolder = new ViewHolder();
viewHolder.etName = (EditText) convertView.findViewById(R.id.etName);
viewHolder.etWorkload = (EditText) convertView.findViewById(R.id.etWorkload);
viewHolder.etWeight = (EditText) convertView.findViewById(R.id.etWeight);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
// assigning values
Exercise e = adapterData.get(position);
viewHolder.etName.setText(e.getName());
viewHolder.etWorkload.setText(e.getWorkload());
viewHolder.etWeight.setText(String.valueOf(e.getWeight()));
// updating information
viewHolder.etName.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
Log.v(TAG, "saving ex. name: " + viewHolder.etName.getText());
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
// THIS IS THE PROBLEM
// realm.where(Exercise.class).
}
});
}
}
});
// ...
// a listener for every edittext
感謝。
「RecyclerView」ではなく「ListView」を使用しているため、このような問題が発生しています。 – EpicPandaForce
@EpicPandaForceどのようにRecyclerViewで問題を解決できますか? – batman191
ListViewの最大の問題は、常にリスト項目内のフォーカス可能な項目のフォーカスを処理していたことです。 – EpicPandaForce