人人网SDK Demo项目学习 3 在apilist中绑定事件调用Activity
来源:互联网 发布:福建广电网络 泉州 编辑:程序博客网 时间:2024/04/29 17:38
忘了在上篇介绍,绑定了的apilist是怎么点击之后跳转到对应Activity的
人人工程师有别于其他人的做法,把Activity跳转写到了一个invoke类中,然后根据Activity名字调用相应的Activity
adapter中绑定事件的代码
itemView.setOnClickListener(new View.OnClickListener() {@Overridepublic 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项目学习 2 r界面学习
- 人人网SDK Demo项目学习 1 全局标题栏
- 人人网SDK Demo项目学习 异步发送信息
- 人人网SDK Demo项目学习获取系统Log类
- android 调用人人网sdk登录页面 成功后不跳转 只停留在白色Oauth页面
- 【js学习之路】事件绑定函数中,将this换成调用对象导致的问题
- 如何在网页中绑定回车键事件
- 在GridView_RowDataBound事件中绑定列
- 如何在网页中绑定回车键事件
- 在网页中绑定回车键事件
- JQuery在循环中绑定事件
- JavaScript 在for循环中绑定事件
- WPF 在事件中绑定命令
- 在ES6类中绑定事件
- js 在循环中绑定事件
- 调用人人网API
- 在当前事件中调用另一个事件
- Google BigTable 中文版
- 用vfp的数据库自动生成CursorAdapter类代码
- 打造电商品牌的四个关键和六个诊断指标
- FTP磁盘配额和访问时间控制
- 学习资源
- 人人网SDK Demo项目学习 3 在apilist中绑定事件调用Activity
- POJ3252
- Android显示系统之View与SurfaceView更新屏幕的区别
- java-哪些东西会被JVM回收
- Android网络编程
- 又到找工作季了
- 众数
- 通过DNS实现DVR的网络访问功能
- extern、头文件