Actual combat QQ demo source code (this application is included in this example)
Server-side download : http://download.csdn.net/download/knight_black_bob/9822551
android eclipse version : http://download.csdn.net/download/knight_black_bob/9822553
android stdio version : http://download.csdn.net/download/knight_black_bob/9822556
operation result:
log print:
flow chart:
The above is used by eventbus, and the following can be used as normal logic
1
@Override public 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>() { @Override public 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() { @Override public 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(); }
Donate to developers
Driven by interest, I write 免费
something with joy and sweat. I hope you like my work and can support it at the same time. Of course, if you have money to support a money field (the love sign in the upper right corner, support Alipay and PayPal donations), if you have no money to support a personal field, thank you.
Thank you for your sponsorship, I will do better!