Каждый элемент в моем представлении списка состоит из EditTexts
, который пользователь может редактировать. Цель состоит в том, что когда пользователь фокусируется вне конкретного edittext, значение, которое он вставил, будет сохранено в базе данных Realm
.Редактируемые ListView items with Realm
Добавление пустых элементов в список отлично работает, но фактическая экономия данных - это то, с чем я борюсь.
Что я сделал:
В адаптере, я добавил onFocusChangeListener
к каждому из edittexts. Однако я не могу сохранить данные для этой конкретной строки или объекта.
У меня есть позиция предмета от адаптера, но я не могу получить доступ к 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
Спасибо.
У вас проблемы с этим, потому что вы используете 'ListView' вместо' RecyclerView'. – EpicPandaForce
@EpicPandaForce Как реджиклер просматривает мои проблемы? – batman191
Самая большая проблема с ListView всегда занималась фокусировкой на фокусируемых элементах внутри элемента списка. – EpicPandaForce