android eventbus ui sqlite http
16lz
2022-07-26
运行结果:
日志打印:
流程图:
1
@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { mBaseView = LayoutInflater.from(getActivity()).inflate(R.layout.friendship_list_fragment, null); initUtils(); initView(mBaseView); initListeners(); EventBus.getDefault().register( this ); FriendshipUserRequest.getFriendshipUserFromWeb(user.getId()); return mBaseView;}
2
public class FriendshipUserRequest {public static void getFriendshipUserFromWeb(long userId ){GsonRequest<QueryResultJson> gsonRequest = new GsonRequest<QueryResultJson>( Constants.friendship_url+ userId, QueryResultJson.class, new Response.Listener<QueryResultJson>() {@Overridepublic void onResponse(QueryResultJson response) {JsonElement obj =response.retdata; if (obj != null && response.retcode == 200) { Log.e("baoyou","obj.toString() == "+ obj.toString()); FriendshipUserEntity resultjson = JsonParser.parseDateJson(obj.toString(), FriendshipUserEntity.class); FriendshipUserHttpManager.getFriendshipUserFromWeb(resultjson); }else{ }}}, new Response.ErrorListener() {@Overridepublic void onErrorResponse(VolleyError error) { }}) ;Volley.newRequestQueue(MyApplication.newInstance()).add(gsonRequest); }}
3
public class FriendshipUserHttpManager {public static void getFriendshipUserFromWeb( FriendshipUserEntity item){List<FriendshipUserEntity> list = new ArrayList<FriendshipUserEntity>();list.add(item);FriendshipUserHttpEvent dbEvent = new FriendshipUserHttpEvent();dbEvent.status = list.size() == 0? RequestStatus.HTTP_NONE: RequestStatus.HTTP_SUCCESS;dbEvent.mDataList = list;Log.e("baoyou", "--"+list.size() + list.toString());EventBus.getDefault().post(dbEvent);}}
4.
public void onEventMainThread(RequestEvent dbEvent) {Log.e("baoyou", "-- event ==================" );if (dbEvent instanceof FriendshipUserHttpEvent) {Log.e("baoyou", "-- event http ==================" );FriendshipUserHttpEvent event = (FriendshipUserHttpEvent) dbEvent;switch (dbEvent.status) {case HTTP_NONE:break;case HTTP_SUCCESS: {FriendshipUserEntity item = event.mDataList.get(0);userDB.deleteAll();friendShipDB.deleteAll();for (UserEntity ue : item.userList) {userDB.saveOrUpdate(ue);}for (FriendShipEntity fse : item.friendShipList) {friendShipDB.saveOrUpdate(fse);}FriendShipDBManager.getAllFromDB(friendShipDB);}break;default:break;} }@Override public void onDestroy() { EventBus.getDefault().unregister( this ); super.onDestroy(); }
5.
public class FriendShipDBManager {public static void getAllFromDB(FriendShipDB friendShipDB){List<FriendShipEntity> list = friendShipDB.getAll(); FriendShipDBEvent dbEvent = new FriendShipDBEvent();dbEvent.status = list.size() == 0? RequestStatus.DB_NONE: RequestStatus.DB_SUCCESS;dbEvent.mDataList = list;EventBus.getDefault().post(dbEvent);}}
6.
else if (dbEvent instanceof FriendShipDBEvent) {Log.e("baoyou", "-- event db ==================" );FriendShipDBEvent event = (FriendShipDBEvent) dbEvent;switch (dbEvent.status) {case DB_NONE: break;case DB_SUCCESS: { List<FriendShipEntity> list = event.mDataList;List<FriendShips> dataList = new ArrayList<FriendShips>();for (FriendShipEntity fs : list) {UserEntity userEntityByIndex = null;if (fs.getUserId() != 0)userEntityByIndex = userDB.getEntityById(fs.getUserId() + "");FriendShips item = new FriendShips();item.setId(fs.getId());item.setUserSrc(fs.getUserSrc());item.setParentId(fs.getParentId());item.setName(fs.getName());if (userEntityByIndex != null)item.setName(userEntityByIndex.getNickName());item.setUserId(fs.getUserId());if (userEntityByIndex != null)item.setPhoto(userEntityByIndex.getPhoto());dataList.add(item);} for (FriendShips fs : dataList) {if (fs.getParentId() == 0) {long id = fs.getId();List<FriendShips> childs = new ArrayList<FriendShips>();for (FriendShips fs2 : dataList) {if (id == fs2.getParentId()) {childs.add(fs2);}}fs.setChilds(childs);mDataList.add(fs);}} mAdapter.notifyDataSetChanged();}
更多相关文章
- android(NDK+JNI)---Eclipse+CDT+gdb调试android ndk程序
- 细数Android(安卓)Studio中使用junit4测试框架中的坑
- Ionic 运行报错No resource identifier found for attribute 'ap
- android 开机直接运行app并当做手机桌面
- Android出现java.lang.RuntimeException: Can't toast on a thre
- flutter-使用第三方库,编译和运行版本不一致问题 2
- Android(安卓)4.0.1 源码下载,编译和运行
- Android(安卓)RabbitMQ使用之RabbitMQ安装及配置
- android获取正在运行的进程