数据同步模块基本完成

This commit is contained in:
kehaoyuan@ghzhushou.com
2020-03-24 15:28:19 +08:00
parent c87bf1e613
commit 72871e55c6
12 changed files with 190 additions and 55 deletions

View File

@ -147,26 +147,33 @@ public abstract class BaseFragment<T> extends Fragment implements OnRequestCallB
initView(mCachedView);
RecyclerView syncRecyclerView = provideSyncPageRecyclerView();
if (syncRecyclerView != null) {
initSyncPageObserver(syncRecyclerView);
if (addSyncPageObserver()) {
initSyncPageObserver();
}
}
private void initSyncPageObserver(RecyclerView syncRecyclerView) {
private void initSyncPageObserver() {
SyncPageRepository.INSTANCE.getSyncPageLiveData().observe(this, syncDataEntities -> {
if (syncDataEntities == null || syncDataEntities.isEmpty()) return;
RecyclerView.Adapter adapter = syncRecyclerView.getAdapter();
if (!(adapter instanceof ISyncAdapterHandler)) return;
for (int i = 0; i < adapter.getItemCount(); i++) {
Pair<String, Object> syncKey = ((ISyncAdapterHandler) adapter).getSyncData(i);
if (syncKey == null) return;
for (SyncDataEntity syncDataEntity : syncDataEntities) {
if (syncDataEntity.getSyncId().equals(syncKey.getFirst())) {
boolean isSuccess = SyncPageRepository.INSTANCE.handleSyncData(syncKey.getSecond(), syncDataEntity);
if (isSuccess) adapter.notifyItemChanged(i);
try {
if (syncDataEntities == null || syncDataEntities.isEmpty()) return;
RecyclerView.Adapter adapter = provideSyncAdapter();
if (!(adapter instanceof ISyncAdapterHandler)) return;
for (int i = 0; i < adapter.getItemCount(); i++) {
Pair<String, Object> syncKey = ((ISyncAdapterHandler) adapter).getSyncData(i);
if (syncKey == null) return;
for (SyncDataEntity syncDataEntity : syncDataEntities) {
if (syncDataEntity.getSyncId().equals(syncKey.getFirst())) {
boolean isSuccess = SyncPageRepository.INSTANCE.handleSyncData(syncKey.getSecond(), syncDataEntity);
if (isSuccess) adapter.notifyItemChanged(i);
}
}
}
} catch (Exception e) {
if (BuildConfig.DEBUG) {
throw e;
} else {
e.printStackTrace();
}
}
});
}
@ -214,7 +221,7 @@ public abstract class BaseFragment<T> extends Fragment implements OnRequestCallB
try {
Utils.toast(getContext(), msg);
} catch (Exception ignore) {
}
}
@ -283,7 +290,11 @@ public abstract class BaseFragment<T> extends Fragment implements OnRequestCallB
return this;
}
protected RecyclerView provideSyncPageRecyclerView() {
protected RecyclerView.Adapter provideSyncAdapter() {
return null;
}
protected boolean addSyncPageObserver() {
return false;
}
}