/* * The MIT License (MIT) * * Copyright (c) 2014-2015 Umeng, Inc * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package com.umeng.comm.ui.adapters; import android.app.Activity; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.util.TypedValue; import android.view.View; import android.view.View.OnClickListener; import android.widget.ToggleButton; import com.umeng.comm.core.beans.Topic; import com.umeng.comm.core.constants.Constants; import com.umeng.comm.core.imageloader.ImgDisplayOption; import com.umeng.comm.core.utils.ResFinder; import com.umeng.comm.core.utils.ResFinder.ResType; import com.umeng.comm.ui.activities.TopicDetailActivity; import com.umeng.comm.ui.adapters.viewholders.ActiveUserViewHolder; /** * 推荐话题的Adapter */ public class RecommendTopicAdapter extends BackupAdapter<Topic, ActiveUserViewHolder> { private static String mFeedsStr = ""; private static String mFansStr = ""; private static final String DIVIDER = " / "; private FollowListener<Topic> mListener; private boolean isFromFindPage = false;// 是否来自于发现页面。对于来自发现页面需要单独处理, private int mTopicColor = 0; private int mTopicIcon = 0; /** * 推荐话题的显示样式跟推荐用户的样式相同 * * @param context * @param topics */ public RecommendTopicAdapter(Context context) { super(context); mTopicColor = ResFinder.getColor("umeng_comm_text_topic_light_color"); mFeedsStr = ResFinder.getString("umeng_comm_feeds_num"); mFansStr = ResFinder.getString("umeng_comm_fans_num"); mTopicColor = ResFinder.getColor("umeng_comm_text_topic_light_color"); mTopicIcon = ResFinder.getResourceId(ResType.DRAWABLE, "umeng_comm_topic_icon"); } @Override protected ActiveUserViewHolder createViewHolder() { return new ActiveUserViewHolder(); } @Override protected void setItemData(int position, final ActiveUserViewHolder viewHolder, View rootView) { final Topic topic = getItem(position); viewHolder.mUserNameTextView.setText(topic.name); viewHolder.mUserNameTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16); viewHolder.mImageView.setImageResource(mTopicIcon); viewHolder.mImageView.setImageUrl(topic.icon, ImgDisplayOption.getTopicIconOption()); viewHolder.mGenderImageView.setVisibility(View.GONE); viewHolder.mMsgFansTextView.setText(buildMsgFansStr(topic)); setToggleButtonStatusAndEvent(viewHolder, topic); if (isFromFindPage) { viewHolder.mUserNameTextView.setTextColor(mTopicColor); rootView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { gotoTopicDetailPage(topic); } }); } // 设置padding // setupItemViewPadding(viewHolder); } // protected void setupItemViewPadding(ActiveUserViewHolder viewHolder) { // int left = viewHolder.mView.getLeft() + DeviceUtils.dp2px(mContext, 4); // int top = viewHolder.mView.getLeft(); // int right = viewHolder.mView.getLeft(); // int bottom = viewHolder.mView.getLeft(); // viewHolder.mView.setPadding(left, top, right, bottom); // } /** * 构建feed数量、粉丝数量的字符串 * * @param topic * @return */ protected String buildMsgFansStr(Topic topic) { StringBuilder builder = new StringBuilder(mFeedsStr); builder.append(topic.feedCount); builder.append(DIVIDER).append(mFansStr); builder.append(topic.fansCount); return builder.toString(); } /** * 跳转到话题详情页面</br> * * @param topic */ private void gotoTopicDetailPage(Topic topic) { Intent intent = new Intent(); ComponentName componentName = new ComponentName(mContext, TopicDetailActivity.class); intent.setComponent(componentName); intent.putExtra(Constants.TAG_TOPIC, topic); ((Activity) mContext).startActivity(intent); } public void setFollowListener(FollowListener<Topic> listener) { this.mListener = listener; } /** * 设置是否来自于发送页面</br> * * @param fromFind */ public void setFromFindPage(boolean fromFind) { isFromFindPage = fromFind; } private void setToggleButtonStatusAndEvent(final ActiveUserViewHolder viewHolder, final Topic topic) { viewHolder.mToggleButton.setChecked(topic.isFocused); viewHolder.mToggleButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mListener.onFollowOrUnFollow(topic, viewHolder.mToggleButton, viewHolder.mToggleButton.isChecked()); } }); } public static interface FollowListener<T> { public void onFollowOrUnFollow(T t, ToggleButton toggleButton, boolean isFollow); } }