Buduję aplikację na Androida na Javę i używam pliku realm.io dla mojej bazy danych. Mój problem polega na tym, że mam RealmList, a mój niestandardowy adapter ListView akceptuje tylko RealmResults. Poniżej znajduje się kod i więcej szczegółów.Jak zmienić RealmList w RealmResult?
Mam klasę czatu, która ma RealmList, RealmList, userId i chatId.
public class Chat extends RealmObject{
private RealmList<Friend> participants;
private RealmList<Message> messages;
@PrimaryKey
private String chatId;
private String userId;
...
}
W mojej działalności, w których staram się wyświetlać wszystkie wiadomości, że chat, mogę zadzwonić chat.getMessages(), aby uzyskać wszystkie wiadomości na ten czat jako RealmList ale poniżej mój adapter ListView trwa RealmResult ponieważ rozciąga 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;
}
}
Oto gdzie ja nazywam to wszystko
RealmList<Message> messages = chat.getMessages();
ListView messageList = (ListView) findViewById(R.id.message_list);
adapter = new MessageAdapter(this, messages, true);
messageList.setAdapter(adapter);
Jestem otwarty na zmianę mojego RealmList do RealmResult jeśli to możliwe (mam wyglądał nd wydaje się, że tak nie jest) lub jeśli mogę użyć RealmList w adapterze niestandardowej dziedziny, to byłoby inne rozwiązanie. Wszystko, co pomoże mi przejść do przodu, byłoby wielką pomocą.
dzięki
Spowoduje to , czy zarządza automatyczną aktualizacją dla obiektu w relacji? – BlackRabbit
Tak, robi. Kiedy zmienia się obiekt w relacji, wywoływane jest również changeListener. Zostanie wywołane 'RealmBaseAdapter.notifyDataSetChanged'. – beeender
co oznacza "T"? ponieważ dostaję niekompatybilny błąd typu zwrotu – Hunt