android eventbus ui sqlite http

简介:     实战 QQ demo源码(本例中有该应用) 服务器端下载:http://download.csdn.net/download/knight_black_bob/9822551 android eclipse 版:http://download.

 

 

实战 QQ demo源码(本例中有该应用)

服务器端下载http://download.csdn.net/download/knight_black_bob/9822551

android eclipse 版http://download.csdn.net/download/knight_black_bob/9822553

android stdio  版本http://download.csdn.net/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捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

 

 

目录
相关文章
|
15天前
|
XML API 网络安全
【安卓】在安卓中使用HTTP协议的最佳实践
【安卓】在安卓中使用HTTP协议的最佳实践
30 4
|
6天前
|
Android开发 开发者
Android UI设计中,Theme定义了Activity的视觉风格,包括颜色、字体、窗口样式等,定义在`styles.xml`。
【6月更文挑战第26天】Android UI设计中,Theme定义了Activity的视觉风格,包括颜色、字体、窗口样式等,定义在`styles.xml`。要更改主题,首先在该文件中创建新主题,如`MyAppTheme`,覆盖所需属性。然后,在`AndroidManifest.xml`中应用主题至应用或特定Activity。运行时切换主题可通过重新设置并重启Activity实现,或使用`setTheme`和`recreate()`方法。这允许开发者定制界面并与品牌指南匹配,或提供多主题选项。
17 6
|
6天前
|
开发工具 Android开发 开发者
Android `.9.png` 图像是用于UI的可拉伸格式,保持元素清晰度和比例
【6月更文挑战第26天】Android `.9.png` 图像是用于UI的可拉伸格式,保持元素清晰度和比例。通过边上的黑线定义拉伸区域,右下角黑点标识内容区域,适应文本或组件大小变化。常用于按钮、背景等,确保跨屏幕尺寸显示质量。Android SDK 提供`draw9patch.bat`工具来创建和编辑。**
24 6
|
7天前
|
缓存 网络协议 安全
Android网络面试题之Http基础和Http1.0的特点
**HTTP基础:GET和POST关键差异在于参数传递方式(GET在URL,POST在请求体),安全性(POST更安全),数据大小限制(POST无限制,GET有限制),速度(GET较快)及用途(GET用于获取,POST用于提交)。面试中常强调POST的安全性、数据量、数据类型支持及速度。HTTP 1.0引入了POST和HEAD方法,支持多种数据格式和缓存,但每个请求需新建TCP连接。**
20 5
|
5天前
|
安全 网络协议 算法
Android网络基础面试题之HTTPS的工作流程和原理
HTTPS简述 HTTPS基于TCP 443端口,通过CA证书确保服务器身份,使用DH算法协商对称密钥进行加密通信。流程包括TCP握手、证书验证(公钥解密,哈希对比)和数据加密传输(随机数加密,预主密钥,对称加密)。特点是安全但慢,易受特定攻击,且依赖可信的CA。每次请求可能复用Session ID以减少握手。
15 2
|
6天前
|
API Android开发 开发者
`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView
【6月更文挑战第26天】`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView。它提供高效的数据视图复用,优化的布局管理,支持多种布局(如线性、网格),并解耦数据、适配器和视图。RecyclerView的灵活性、性能(如局部刷新和动画支持)和扩展性使其成为现代Android开发的首选,特别是在处理大规模数据集时。
17 2
|
7天前
|
Android开发 开发者
Android UI中的Theme定义了Activity的视觉风格,包括颜色、字体、窗口样式等。要更改主题
【6月更文挑战第25天】Android UI中的Theme定义了Activity的视觉风格,包括颜色、字体、窗口样式等。要更改主题,首先在`styles.xml`中定义新主题,如`MyAppTheme`,然后在`AndroidManifest.xml`中设置`android:theme`。可应用于全局或特定Activity。运行时切换主题需重置Activity,如通过`setTheme()`和`recreate()`方法。这允许开发者定制界面以匹配品牌或用户偏好。
13 2
|
6天前
|
缓存 网络协议 Android开发
Android网络面试题之Http1.1和Http2.0
HTTP/1.1 引入持久连接和管道机制提升效率,支持分块传输编码和更多请求方式如PUT、PATCH。Host字段指定服务器域名,RANGE用于断点续传。HTTP/2变为二进制协议,实现多工处理,头信息压缩和服务器推送,减少延迟并优化资源加载。HTTP不断发展,从早期的简单传输到后来的高效交互。
17 0
Android网络面试题之Http1.1和Http2.0
|
12天前
|
数据库 Android开发 数据安全/隐私保护
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
59 2
|
25天前
|
XML Android开发 数据格式
【Android UI】使用RelativeLayout与TableLayout实现登录界面
【Android UI】使用RelativeLayout与TableLayout实现登录界面
30 5