我不理解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);
}}