package com.diandi.demo.adapter; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Color; import android.net.Uri; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import com.diandi.demo.CustomApplication; import com.diandi.demo.R; import com.diandi.demo.adapter.base.BaseListAdapter; import com.diandi.demo.db.DatabaseUtilC; import com.diandi.demo.model.User; import com.diandi.demo.model.diandi.DianDi; import com.diandi.demo.model.diandi.OfficialDiandi; import com.diandi.demo.sync.UserHelper; import com.diandi.demo.sync.sns.TencentShare; import com.diandi.demo.sync.sns.TencentShareConstants; import com.diandi.demo.sync.sns.TencentShareEntity; import com.diandi.demo.ui.activity.CommentActivity; import com.diandi.demo.ui.activity.ImageBrowserActivity; import com.diandi.demo.ui.activity.LoginActivity; import com.diandi.demo.util.ActivityUtil; import com.diandi.demo.util.ImageLoadOptions; import com.diandi.demo.util.L; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener; import java.util.ArrayList; import java.util.List; import cn.bmob.v3.BmobUser; import cn.bmob.v3.datatype.BmobRelation; import cn.bmob.v3.listener.UpdateListener; /** * ******************************************************************************* * ********* Author : klob(kloblic@gmail.com) . * ********* Date : 2014-11-29 . * ********* Time : 11:46 . * ********* Project name : Diandi1.18 . * ********* Version : 1.0 * ********* Copyright @ 2014, klob, All Rights Reserved * ******************************************************************************* */ public class ChannelAdapter extends BaseListAdapter<OfficialDiandi> { public static final int SAVE_FAVOURITE = 2; public static final int DIANDI_ALL = 1; private int mDiandiType = DIANDI_ALL; public static final int DIANDI_PERSON = 2; public static final int DIANDI_FAV = 3; private static final String VIEW_ID = "view_id_"; public ChannelAdapter(Context context, List<OfficialDiandi> list) { super(context, list); } public ChannelAdapter(Context context, List<OfficialDiandi> list, int diandiType) { super(context, list); this.mDiandiType = diandiType; } @Override public View bindView(int position, View convertView, ViewGroup parent) { final ViewHolder viewHolder; if (convertView == null) { viewHolder = new ViewHolder(); convertView = mInflater.inflate(R.layout.item_feed, null); viewHolder.userName = (TextView) convertView.findViewById(R.id.user_name); viewHolder.userLogo = (ImageView) convertView.findViewById(R.id.user_logo); viewHolder.favMark = (ImageView) convertView.findViewById(R.id.item_action_fav); viewHolder.contentText = (TextView) convertView.findViewById(R.id.content_text); viewHolder.contentImage = (ImageView) convertView.findViewById(R.id.content_image); viewHolder.contentLink = (TextView) convertView.findViewById(R.id.content_link); viewHolder.love = (TextView) convertView.findViewById(R.id.item_action_love); viewHolder.share = (TextView) convertView.findViewById(R.id.item_action_share); viewHolder.comment = (TextView) convertView.findViewById(R.id.item_action_comment); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } final OfficialDiandi entity = mDataList.get(position); L.i("user", entity.toString()); User user = entity.getAuthor(); if (user == null) { L.i("user", "USER IS NULL"); } if (user.getAvatar() == null) { L.i("user", "USER avatar IS NULL"); } String avatarUrl = null; if (user.getAvatar() != null) { avatarUrl = user.getAvatar(); } ImageLoader.getInstance().displayImage(avatarUrl, viewHolder.userLogo, ImageLoadOptions.getOptions()); viewHolder.userName.setText(entity.getAuthor().getNick()); viewHolder.contentText.setText(entity.getContent()); if (null == entity.getContentfigureurl()) { viewHolder.contentImage.setVisibility(View.GONE); } else { viewHolder.contentImage.setVisibility(View.VISIBLE); ImageLoader.getInstance() .displayImage(entity.getContentfigureurl().getFileUrl(mContext) == null ? "" : entity.getContentfigureurl().getFileUrl(mContext), viewHolder.contentImage, ImageLoadOptions.getOptions(R.drawable.bg_pic_loading), new SimpleImageLoadingListener() { @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { super.onLoadingComplete(imageUri, view, loadedImage); float[] cons = ActivityUtil.getBitmapConfiguration(loadedImage, viewHolder.contentImage, 1.0f); RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams((int) cons[0], (int) cons[1]); layoutParams.addRule(RelativeLayout.BELOW, R.id.content_text); viewHolder.contentImage.setLayoutParams(layoutParams); } } ); viewHolder.contentImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(mContext, ImageBrowserActivity.class); ArrayList<String> photos = new ArrayList<String>(); photos.add(entity.getContentfigureurl().getFileUrl(mContext)); intent.putStringArrayListExtra("photos", photos); intent.putExtra("position", 0); mContext.startActivity(intent); } }); } final String link = entity.getLink(); if (link != null) { viewHolder.contentLink.setVisibility(View.VISIBLE); viewHolder.contentLink.setText(link); viewHolder.contentLink.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Uri uri = Uri.parse(link); Intent it = new Intent(Intent.ACTION_VIEW, uri); mContext.startActivity(it); } }); } else { viewHolder.contentLink.setVisibility(View.GONE); } viewHolder.love.setText(entity.getLove() + ""); L.i("love", entity.getMyLove() + ".."); if (entity.getMyLove()) { viewHolder.love.setTextColor(Color.parseColor("#D95555")); } else { viewHolder.love.setTextColor(Color.parseColor("#888888")); } /* if (DatabaseUtil.getInstance(mContext).isLoved(entity)) { entity.setMyLove(true); entity.setLove(entity.getLove()); viewHolder.love.setTextColor(Color.parseColor("#D95555")); viewHolder.love.setText(entity.getLove() + ""); } */ /** * 点赞 */ viewHolder.love.setOnClickListener(new View.OnClickListener() { boolean oldFav = entity.getMyFav(); @Override public void onClick(View v) { if (entity.getMyLove()) { viewHolder.love.setTextColor(Color.parseColor("#D95555")); return; } entity.setLove(entity.getLove() + 1); viewHolder.love.setTextColor(Color.parseColor("#D95555")); viewHolder.love.setText(entity.getLove() + ""); entity.increment("love", 1); if (entity.getMyFav()) { entity.setMyFav(false); } /* entity.update(mContext, new UpdateListener() { @Override public void onSuccess() { entity.setMyLove(true); entity.setMyFav(oldFav); DatabaseUtil.getInstance(mContext).insertFav(entity); L.i(TAG, "点赞成功~"); } @Override public void onFailure(int arg0, String arg1) { entity.setMyLove(true); entity.setMyFav(oldFav); } });*/ } }); /** * 分享 */ viewHolder.share.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ShowToast("分享给好友看哦"); final TencentShare tencentShare = new TencentShare(CustomApplication.getInstance().getTopActivity(), getQQShareEntity(entity)); tencentShare.shareToQQ(); } }); /** * 评论 */ viewHolder.comment.setVisibility(View.GONE); viewHolder.comment.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (UserHelper.getCurrentUser() == null) { ShowToast("请先登录。"); Intent intent = new Intent(); intent.setClass(mContext, LoginActivity.class); CustomApplication.getInstance().getTopActivity().startActivity(intent); return; } Intent intent = new Intent(); intent.setClass(CustomApplication.getInstance().getTopActivity(), CommentActivity.class); intent.putExtra("data", entity); startAnimActivity(intent); } }); /** * 收藏 */ if (entity.getMyFav()) { viewHolder.favMark.setImageResource(R.drawable.ic_action_fav_choose); } else { viewHolder.favMark.setImageResource(R.drawable.ic_action_fav_normal); } viewHolder.favMark.setVisibility(View.GONE); /* viewHolder.favMark.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //收藏 ShowToast("收藏"); onClickFav(v, entity); } });*/ return convertView; } private TencentShareEntity getQQShareEntity(OfficialDiandi diandi) { String title = "这里有好多有用的资源哦"; String comment = "快来这里下载吧"; String img = null; if (diandi.getContentfigureurl() != null) { img = diandi.getContentfigureurl().getFileUrl(mContext); } else { img = TencentShareConstants.DEFAULT_IMG_URL; } String summary = diandi.getContent() + diandi.getLink(); TencentShareEntity entity = new TencentShareEntity(title, img, TencentShareConstants.WEB, summary, comment); entity.setTargetUrl(diandi.getLink()); return entity; } private void onClickFav(View v, final DianDi DianDi) { User user = BmobUser.getCurrentUser(mContext, User.class); if (user != null && user.getSessionToken() != null) { BmobRelation favRelaton = new BmobRelation(); DianDi.setMyFav(!DianDi.getMyFav()); if (DianDi.getMyFav()) { ((ImageView) v).setImageResource(R.drawable.ic_action_fav_choose); favRelaton.add(DianDi); user.setFavorite(favRelaton); ShowToast("收藏成功。"); user.update(mContext, new UpdateListener() { @Override public void onSuccess() { DatabaseUtilC.getInstance(mContext).insertFav(DianDi); L.i(TAG, "收藏成功。"); } @Override public void onFailure(int arg0, String arg1) { L.i(TAG, "收藏失败。请检查网络~"); ShowToast("收藏失败。请检查网络~" + arg0); } }); } else { ((ImageView) v).setImageResource(R.drawable.ic_action_fav_normal); favRelaton.remove(DianDi); user.setFavorite(favRelaton); ShowToast("取消收藏。"); user.update(mContext, new UpdateListener() { @Override public void onSuccess() { DatabaseUtilC.getInstance(mContext).deleteFav(DianDi); L.i(TAG, "取消收藏。"); //try get fav to see if fav success // getMyFavourite(); } @Override public void onFailure(int arg0, String arg1) { L.i(TAG, "取消收藏失败。请检查网络~"); ShowToast("取消收藏失败。请检查网络~" + arg0); } }); } } } public static class ViewHolder { public ImageView userLogo; public TextView userName; public TextView contentText; public ImageView contentImage; public TextView contentLink; public ImageView favMark; public TextView love; public TextView hate; public TextView share; public TextView comment; } }