人人网SDK Demo项目学习 3 在apilist中绑定事件调用Activity
2012-10-13 19:20
537 查看
忘了在上篇介绍,绑定了的apilist是怎么点击之后跳转到对应Activity的
人人工程师有别于其他人的做法,把Activity跳转写到了一个invoke类中,然后根据Activity名字调用相应的Activity
adapter中绑定事件的代码
ApiDemoInvoker类
反思一下这样做法的优缺点
优点:
1 的list所在的Activity代码超级简洁 只管绑定数据就可以 注册事件在adapter中进行
2 代码结构更加清晰,跳转时间由专门的invoke类负责 增加其他Activity的时候 只要在这个类中就可以 是门面模式吗?(个人理解,设计模式研究不多)
缺点
和所有设计模式一样,增加的复杂度.
人人工程师有别于其他人的做法,把Activity跳转写到了一个invoke类中,然后根据Activity名字调用相应的Activity
adapter中绑定事件的代码
itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ApiDemoInvoker.invoke(activity, item.getInvokeName()); } });
ApiDemoInvoker类
/** * $id$ */ package com.renren.api.connect.android.demo; import android.app.Activity; import android.content.Intent; import com.renren.api.connect.android.Renren; import com.renren.api.connect.android.demo.activity.ApiFeedPublishActivity; import com.renren.api.connect.android.demo.activity.ApiUsersInfoActivity; import com.renren.api.connect.android.demo.activity.FriendsGetActivity; import com.renren.api.connect.android.demo.activity.FriendsGetFriendsActivity; import com.renren.api.connect.android.demo.activity.PayActivity; /** * Demos the how to use Renren APIs * * @author Shaofeng Wang (shaofeng.wang@renren-inc.com) */ public final class ApiDemoInvoker { private static Renren renren; /** * Initialize the invoker. This method must be called before calling * 'invoke' * * @param renren */ public static void init(Renren renren) { ApiDemoInvoker.renren = renren; } /** * Call the api demo methods specified by its invoke name * * @param activity * The activity in which the method is called * @param invokeName * The name used to specify which demo method to be called */ public static void invoke(Activity activity, String invokeName) { if (invokeName.equals(activity .getString(R.string.publish_status_invoke))) { StatusDemo.publishStatus(activity, renren); } else if (invokeName.equals(activity .getString(R.string.one_click_status_invoke))) { StatusDemo.publishStatusOneClick(activity, renren); } else if (invokeName.equals(activity .getString(R.string.one_click_photo_invoke))) { PhotoDemo.uploadPhotoWithActivity(activity, renren); } else if (invokeName.equals(activity .getString(R.string.publish_photo_invoke))) { PhotoDemo.uploadPhoto(activity, renren); } else if (invokeName.equals(activity .getString(R.string.create_album_invoke))) { PhotoDemo.createAlbum(activity, renren); } else if (invokeName.equals(activity .getString(R.string.albums_info_invoke))) { PhotoDemo.getAlbums(activity, renren); } else if (invokeName.equals(activity .getString(R.string.dialog_feed_invoke))) { WidgetDialogDemo.showFeedDialog(activity, renren); } else if (invokeName.equals(activity .getString(R.string.dialog_status_invoke))) { WidgetDialogDemo.showStatusDialog(activity, renren); } else if (invokeName.equals(activity .getString(R.string.publish_feed_invoke))) { Intent intent = new Intent(activity, ApiFeedPublishActivity.class); intent.putExtra(Renren.RENREN_LABEL, renren); activity.startActivity(intent); } else if (invokeName.equals(activity .getString(R.string.users_getinfo_invoke))) { Intent intent = new Intent(activity, ApiUsersInfoActivity.class); intent.putExtra(Renren.RENREN_LABEL, renren); activity.startActivity(intent); } else if (invokeName.equals(activity .getString(R.string.friends_get_invoke))) { Intent intent = new Intent(activity, FriendsGetActivity.class); intent.putExtra(Renren.RENREN_LABEL, renren); activity.startActivity(intent); } else if (invokeName.equals(activity .getString(R.string.friends_get_friends_invoke))) { Intent intent = new Intent(activity, FriendsGetFriendsActivity.class); intent.putExtra(Renren.RENREN_LABEL, renren); activity.startActivity(intent); } else if (invokeName.equals(activity .getString(R.string.extensions_pay_invoke))) { Intent intent = new Intent(activity, PayActivity.class); intent.putExtra(Renren.RENREN_LABEL, renren); activity.startActivity(intent); } } }
反思一下这样做法的优缺点
优点:
1 的list所在的Activity代码超级简洁 只管绑定数据就可以 注册事件在adapter中进行
2 代码结构更加清晰,跳转时间由专门的invoke类负责 增加其他Activity的时候 只要在这个类中就可以 是门面模式吗?(个人理解,设计模式研究不多)
缺点
和所有设计模式一样,增加的复杂度.
相关文章推荐
- 人人网SDK Demo项目学习 3 在apilist中绑定事件调用Activity
- 人人网SDK Demo项目学习 1 全局标题栏
- 人人网SDK Demo项目学习 1 全局标题栏
- 人人网SDK Demo项目学习 异步发送信息
- 人人网SDK Demo项目学习 异步发送信息
- 人人网SDK Demo项目学习获取系统Log类
- 人人网SDK Demo项目学习获取系统Log类
- 人人网SDK Demo项目学习 2 r界面学习
- 人人网SDK Demo项目学习 2 r界面学习
- Api demo源码学习(6)--App/Activity/Hello World
- 【js学习之路】事件绑定函数中,将this换成调用对象导致的问题
- Api demo源码学习(7)--App/Activity/Persistent State
- 【第三篇】学习 android 事件总线androidEventbus之list数据事件的传递,发送list数据事件到另外一个Activity
- Api demo源码学习(9)--App/Activity/Receive Result --Activity间传递数据
- Android ApiDemo学习(三)activity(2)
- ApiDemo的学习总结,个人心得,App模块之Activity
- Api demo源码学习(11)--App/Activity/Reorder Activity
- 安卓Api Demo学习 App/Activity/Dialog
- 调用人人网API,并集成人人网开源Web框架[Demo1]
- Arc gis api for js 学习随笔之绑定事件鼠标动作