实战 QQ demo源码(本例中有该应用)
服务器端下载:http://download.youkuaiyun.com/download/knight_black_bob/9822551
android eclipse 版:http://download.youkuaiyun.com/download/knight_black_bob/9822553
android stdio 版本:http://download.youkuaiyun.com/download/knight_black_bob/9822556
运行结果:
日志打印:
流程图:
以上为eventbus 使用,下面可以作为正常逻辑
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();
}
捐助开发者
在兴趣的驱动下,写一个免费
的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!