人人网SDK Demo项目学习 3 在apilist中绑定事件调用Activity

忘了在上篇介绍,绑定了的apilist是怎么点击之后跳转到对应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的时候 只要在这个类中就可以 是门面模式吗?(个人理解,设计模式研究不多)

缺点

和所有设计模式一样,增加的复杂度.





posted @ 2012-10-13 19:20  sfshine  阅读(184)  评论(0编辑  收藏  举报