运行结果:



日志打印:


流程图:




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();}

更多相关文章

  1. android(NDK+JNI)---Eclipse+CDT+gdb调试android ndk程序
  2. 细数Android(安卓)Studio中使用junit4测试框架中的坑
  3. Ionic 运行报错No resource identifier found for attribute 'ap
  4. android 开机直接运行app并当做手机桌面
  5. Android出现java.lang.RuntimeException: Can't toast on a thre
  6. flutter-使用第三方库,编译和运行版本不一致问题 2
  7. Android(安卓)4.0.1 源码下载,编译和运行
  8. Android(安卓)RabbitMQ使用之RabbitMQ安装及配置
  9. android获取正在运行的进程

随机推荐

  1. Android工具箱APP源码分享:“一个工具箱”
  2. Android知识简单测试题
  3. Android中View的滑动
  4. Android 使用ORMLite打造万能泛型Dao简化
  5. 1.Android(了解Android王国)
  6. Service和Activity通讯的3种常用方式示例
  7. android tab和listiew
  8. Android(安卓)自动检测版本并升级
  9. android中资源整理
  10. Android(安卓)架构组件(一)——Lifecycle