android分页库插入数据库的新数据没有更新列表

时间:2017-12-06 20:59:08

标签: android android-architecture-components

我不理解Invalidate方法的解释,来自官方文档的addInvalidateCallback方法

https://developer.android.com/reference/android/arch/paging/DataSource.html

我正在使用android arch组件分页库,但没有使用Room,当我的数据库中插入了新数据时,我是否必须调用invalidate?那么为了将我的新数据插入列表呢?在适配器上调用setlist不起作用,文档只显示这种情况下的Room用法而不是独立于Room的DataSource,有人可以帮帮我吗?

下面是我的数据源,我使用sqlite来提取新数据,但是当w

public class ChatPersonalDataSource extends TiledDataSource<MessageItem> {

DataManagerMessage mDataManagerMessage;
String participantHash;
String threadID;

public ChatPersonalDataSource(DataManagerMessage mDataManagerMessage, String participantHash, String threadID) {
    this.mDataManagerMessage = mDataManagerMessage;
    this.participantHash = participantHash;
    this.threadID = threadID;
}

@Override
public int countItems() {
    return DataSource.COUNT_UNDEFINED;
}

private List<MessageItem> toMessageItem(List<Message> messages){
    List<MessageItem> messageItems = new ArrayList<>();
    for (Message message :
            messages) {
        messageItems.add(new MessageItem(message));
    }
    return messageItems;
}

@Override
public List<MessageItem> loadRange(int startPosition, int count) {
    Gson gson = new Gson();
    List<Message> newItems = mDataManagerMessage.getMessageByParticipantHashNonObservable(participantHash, threadID, startPosition, count);
    Timber.d("LOAD RANGE " + gson.toJson(newItems));
    return toMessageItem(newItems);
}}

0 个答案:

没有答案