Я создаю приложение для Android Java, и я использую realm.io для своей базы данных. Моя проблема заключается в том, что у меня есть RealmList, и мой пользовательский адаптер ListView принимает только RealmResults. Ниже приведен код и более подробная информация.Как изменить RealmList на RealmResult?
У меня есть класс чата, который имеет RealmList, RealmList, userId и chatId.
public class Chat extends RealmObject{
private RealmList<Friend> participants;
private RealmList<Message> messages;
@PrimaryKey
private String chatId;
private String userId;
...
}
В моей деятельности, где я пытаюсь отобразить все сообщения, чат имеет, я могу назвать chat.getMessages(), чтобы получить все сообщения для этого чата как RealmList но мой ListView адаптер ниже принимает RealmResult, поскольку он расширяет RealmBaseAdapter
public class MessageAdapter extends RealmBaseAdapter<Message> implements ListAdapter {
private String TAG = getClass().getSimpleName();
public MessageAdapter(Context context,
RealmResults<Message> realmResults,
boolean automaticUpdate) {
super(context, realmResults, automaticUpdate);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null)
{
convertView = inflater.inflate(R.layout.listitem_message, parent, false);
}
Message message = getRealmResults().get(position);
if (message != null)
{
((TextView) convertView.findViewById(R.id.message_content)).setText(message.getContent());
DateFormat dateFormat = new SimpleDateFormat("HH:mm", Locale.CANADA);
((TextView) convertView.findViewById(R.id.message_time)).setText(dateFormat.format(message.getTimestamp()));
}
return convertView;
}
public RealmResults<Message> getRealmResults() {
return realmResults;
}
}
Вот где я называю все это
RealmList<Message> messages = chat.getMessages();
ListView messageList = (ListView) findViewById(R.id.message_list);
adapter = new MessageAdapter(this, messages, true);
messageList.setAdapter(adapter);
Я открыт для изменения моего RealmList к RealmResult, если это возможно (я выглядел и, похоже, это не так) или Если я могу использовать RealmList в пользовательском адаптере realm, который будет другим решением. Все, что поможет мне продвинуться вперед, будет большой помощью.
благодаря
Выполнение этого , управляет ли он автоматическимUpdate для объекта? – BlackRabbit
Да, да. Когда изменяется связанный объект, будет активирован changeListener. И вызывается 'RealmBaseAdapter.notifyDataSetChanged'. – beeender
Что означает 'T'? потому что я получаю несовместимую ошибку возвращаемого типа – Hunt