`
knight_black_bob
  • 浏览: 841787 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android eventbus ui sqlite http

阅读更多

 

 

实战 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捐助),没钱捧个人场,谢谢各位。



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

 

 

 

 

  • 大小: 12.4 KB
  • 大小: 85.1 KB
  • 大小: 123.9 KB
  • 大小: 19.7 KB
  • 大小: 17.7 KB
0
1
分享到:
评论

相关推荐

    基于Android开发的课程表APP

    为了实现良好的性能和响应速度,开发者可能还需要考虑数据缓存策略,如使用Room Persistence Library,这是Android官方推荐的SQLite数据库抽象层,提供了更高级别的API,简化了数据库操作。 最后,测试是保证应用...

    Android群英传+Android群英传:神兵利器+Android开发艺术探索

    3. **数据存储**:Android的数据存储方式,如SharedPreferences、SQLite数据库、文件系统和ContentProvider的使用,可能是书中讨论的重要部分。 4. **网络编程**:Android应用中的网络通信,包括HttpURLConnection...

    Android 5个开源库 GSON,ActiveAndroid,butterknife,EventBus,image loader

    GSON和ActiveAndroid处理数据序列化和持久化,Butterknife简化UI交互,EventBus优化组件通信,而Image Loader则负责高效地加载和管理图片资源。理解并熟练运用这些库,能显著提高Android应用的质量和开发效率。

    Android开源项目(OsChina源码)

    - **SQLite数据库**:Android原生的SQLite数据库可能被用于存储用户数据,如登录信息、收藏等,方便离线访问。 - **Room Persistence Library**:OsChina可能采用了Google的Room库,它是对SQLite的现代封装,提供...

    Android 郝玉龙 光盘源码

    3. **数据存储**:Android提供了SQLite数据库用于本地数据存储,郝玉龙的教程可能涵盖如何创建数据库、操作表、查询数据等,还有可能涉及SharedPreferences和File的使用。 4. **网络编程**:在移动应用开发中,网络...

    android备忘录源码

    6. 事件总线(如RxBus或EventBus):用于组件间的通信,例如在添加或删除备忘录后通知UI更新。 四、学习要点 通过研究这个源码,你可以学习到以下Android开发的关键技术: 1. 使用布局管理器(如LinearLayout、...

    Android群英传源码

    3. **数据存储**:Android提供了SQLite数据库、SharedPreferences、ContentProvider等多种数据存储方式。源码中可能会包含数据库操作,如查询、插入、更新和删除数据的示例。 4. **异步处理与多线程**:Android应用...

    Android框架体系架构.pdf

    Android框架体系架构是Android开发中的核心内容,涵盖了UI晋升、组件内核、IPC(Inter-Process Communication,进程间通信)以及数据持久化等关键知识点。本文将详细介绍这些知识,以此来深入理解Android平台的运作...

    开源中国android版源码

    此外,这个项目可能还涉及到了Android的权限管理、网络请求库(如Retrofit或OkHttp)、数据库操作(如SQLite)、事件总线(如EventBus)以及依赖注入框架(如Dagger2)等。这些都是现代Android应用开发中不可或缺的...

    Android源码——oschina-android-app(开源中国).zip

    5. **数据存储**:可能使用SQLite数据库进行本地数据存储,或者使用Room库,它是Android官方推荐的数据库访问层解决方案,提供更友好的API。 6. **网络请求**:可能会使用OkHttp或Volley进行网络请求,获取和发送...

    精品android源码微信所有UI+功能指引+摇一摇

    开发者可以通过源码研究,掌握如何在Android平台上实现这些功能,包括网络通信(如WebSocket、HTTP/HTTPS)、数据存储(SQLite、SharedPreference)、推送服务(如GCM/FCM)等。 3. **摇一摇功能**: - "摇一摇"是...

    android 社区源码(开源中国)

    - 使用EventBus或RxBus:实现组件间的解耦通信,如通知界面刷新、状态变化等。 10. **测试**: - 单元测试:针对各个功能模块进行单元测试,确保代码质量。 - Espresso或Robolectric:进行UI自动化测试,检查...

    Android源码——新浪微博Android客户端.zip

    2. SQLite数据库:在Android中,SQLite用于存储结构化的数据,如用户的登录信息、关注列表等。 3. ContentProvider:作为数据共享的接口,使得不同应用间的数据交换成为可能。 三、网络通信 1. Retrofit或OkHttp:...

    Android二人聊天室

    总的来说,实现【Android二人聊天室】项目,开发者需要掌握Android网络编程、数据传输、UI设计、数据库操作等相关技术,并具备良好的编程实践和问题解决能力。通过这个项目,开发者不仅可以提升Android开发技能,还...

    Android典型技术模块开发详解-下载代码

    Android提供了多种数据存储方式,如SQLite数据库(05)、SharedPreferences、内部/外部存储以及最近流行的Room库。文件05可能涉及数据库操作,08可能介绍如何使用SharedPreferences来存储轻量级数据。 3. **网络...

    三大项目android实战项目源码 51cto

    1. **用户界面设计**:Android应用通常使用XML布局文件来构建UI,可能使用了诸如Activity、Fragment、View等组件,以及自定义View来实现独特的交互效果。此外,Material Design指南可能被遵循,以提供一致且现代的...

    android MVC框架

    在Android中,模型通常包含与服务器交互的网络请求,本地SQLite数据库操作,文件系统读写等。开发者可以创建一个或多个模型类来封装这些功能,确保数据的获取和存储逻辑独立于视图和控制器,从而提高代码的可维护性...

    Android经典项目案例开发实战宝典-源代码

    1. **基础组件与UI设计**:Android应用程序的基础在于各种UI组件,如按钮、文本框、列表视图等。源代码中会包含如何布局、交互设计以及自定义控件的实现,这将帮助开发者了解如何创建用户友好的界面。 2. **数据...

    Android异步回调中的UI同步性问题分析

    常常设计到不同线程之间的通信,如下载图片完成后通知 UI线程更新UI,凡此类场景,无论使用哪一种具体的线程间通信方式(Handler/Message、Handler/post、基于接口的回调、基于多对多的观察者模式如EventBus等),其...

    android天气预报项目代码

    在Android应用中获取天气数据通常需要通过HTTP或HTTPS协议与远程服务器进行交互。这涉及到使用网络库,如OkHttp或者Retrofit,它们简化了网络请求的编写和管理。开发者需要定义API接口,这些接口将与天气预报服务...

Global site tag (gtag.js) - Google Analytics