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



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

 

 

 

 

目录
相关文章
|
2月前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
1月前
|
XML 搜索推荐 前端开发
安卓开发中的自定义视图:打造个性化UI组件
在安卓应用开发中,自定义视图是一种强大的工具,它允许开发者创造独一无二的用户界面元素,从而提升应用的外观和用户体验。本文将通过一个简单的自定义视图示例,引导你了解如何在安卓项目中实现自定义组件,并探讨其背后的技术原理。我们将从基础的View类讲起,逐步深入到绘图、事件处理以及性能优化等方面。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。
|
2月前
|
XML 前端开发 Android开发
Android:UI:Drawable:View/ImageView与Drawable
通过本文的介绍,我们详细探讨了Android中Drawable、View和ImageView的使用方法及其相互关系。Drawable作为图像和图形的抽象表示,提供了丰富的子类和自定义能力,使得开发者能够灵活地实现各种UI效果。View和ImageView则通过使用Drawable实现了各种图像和图形的显示需求。希望本文能为您在Android开发中使用Drawable提供有价值的参考和指导。
48 2
|
4月前
|
XML Android开发 UED
💥Android UI设计新风尚!掌握Material Design精髓,让你的界面颜值爆表!🎨
随着移动应用市场的蓬勃发展,用户对界面设计的要求日益提高。为此,掌握由Google推出的Material Design设计语言成为提升应用颜值和用户体验的关键。本文将带你深入了解Material Design的核心原则,如真实感、统一性和创新性,并通过丰富的组件库及示例代码,助你轻松打造美观且一致的应用界面。无论是色彩搭配还是动画效果,Material Design都能为你的Android应用增添无限魅力。
99 1
|
5月前
|
存储 搜索推荐 Java
探索安卓开发中的自定义视图:打造个性化UI组件Java中的异常处理:从基础到高级
【8月更文挑战第29天】在安卓应用的海洋中,一个独特的用户界面(UI)能让应用脱颖而出。自定义视图是实现这一目标的强大工具。本文将通过一个简单的自定义计数器视图示例,展示如何从零开始创建一个具有独特风格和功能的安卓UI组件,并讨论在此过程中涉及的设计原则、性能优化和兼容性问题。准备好让你的应用与众不同了吗?让我们开始吧!
|
5月前
|
编解码 Android开发
【Android Studio】使用UI工具绘制,ConstraintLayout 限制性布局,快速上手
本文介绍了Android Studio中使用ConstraintLayout布局的方法,通过创建布局文件、设置控件约束等步骤,快速上手UI设计,并提供了一个TV Launcher界面布局的绘制示例。
77 1
|
5月前
|
API Android开发
Android项目架构设计问题之选择和使用合适的UI库如何解决
Android项目架构设计问题之选择和使用合适的UI库如何解决
59 0
|
5月前
|
XML 安全 Android开发
Flutter配置Android和IOS允许http访问
Flutter配置Android和IOS允许http访问
170 3
|
6月前
|
XML Android开发 UED
💥Android UI设计新风尚!掌握Material Design精髓,让你的界面颜值爆表!🎨
【7月更文挑战第28天】随着移动应用市场的发展,用户对界面设计的要求不断提高。Material Design是由Google推出的设计语言,强调真实感、统一性和创新性,通过模拟纸张和墨水的物理属性创造沉浸式体验。它注重色彩、排版、图标和布局的一致性,确保跨设备的统一视觉风格。Android Studio提供了丰富的Material Design组件库,如按钮、卡片等,易于使用且美观。
179 1
|
5月前
|
Java Android开发 UED
安卓scheme_url调端:如果手机上多个app都注册了 http或者https 的 intent。 调端的时候,调起哪个app呢?
当多个Android应用注册了相同的URL Scheme(如http或https)时,系统会在尝试打开这类链接时展示一个选择对话框,让用户挑选偏好应用。若用户选择“始终”使用某个应用,则后续相同链接将直接由该应用处理,无需再次选择。本文以App A与App B为例,展示了如何在`AndroidManifest.xml`中配置对http与https的支持,并提供了从其他应用发起调用的示例代码。此外,还讨论了如何在系统设置中管理这些默认应用选择,以及建议开发者为避免冲突应注册更独特的Scheme。