package com.diandi.demo.adapter; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Color; import android.view.View; import android.view.View.OnClickListener; 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.config.Constant; import com.diandi.demo.model.User; import com.diandi.demo.model.diandi.DianDi; 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.ui.activity.PersonalActivity; import com.diandi.demo.util.ActivityUtil; import com.diandi.demo.util.ImageLoadOptions; import com.diandi.demo.util.L; import com.diandi.demo.widget.drop.WaterDrop; 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.BmobQuery; import cn.bmob.v3.BmobUser; import cn.bmob.v3.datatype.BmobPointer; import cn.bmob.v3.datatype.BmobRelation; import cn.bmob.v3.listener.FindListener; 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 FeedAdapter extends BaseListAdapter<DianDi> { public static final String TAG = "AIContentAdapter"; 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 FeedAdapter(Context context, List<DianDi> list) { super(context, list); } public FeedAdapter(Context context, List<DianDi> 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.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); viewHolder.waterDrop = (WaterDrop) convertView.findViewById(R.id.item_drop); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } /* viewHolder.waterDrop.setText("new"); viewHolder.waterDrop.setTextSize(13); if (Boolean.valueOf(CustomApplication.getInstance().getCache().getAsString(VIEW_ID + entity.getObjectId()))) { viewHolder.waterDrop.setVisibility(View.GONE); } else viewHolder.waterDrop.setVisibility(View.VISIBLE); viewHolder.waterDrop.setOnDragCompeteListener(new DropCover.OnDragCompeteListener() { @Override public void onDrag() { CustomApplication.getInstance().getCache().put(VIEW_ID + entity.getObjectId(), "true"); Log.e(" ", CustomApplication.getInstance().getCache().getAsString(VIEW_ID + entity.getObjectId())); } });*/ final DianDi 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()); if (mDiandiType == 1 || mDiandiType == 3) { viewHolder.userLogo.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { /* if (CustomApplication.getInstance().getCurrentUser() == null) { ShowToast("请先登录。"); Intent intent = new Intent(); intent.setClass(mContext, LoginActivity.class); CustomApplication.getInstance().getTopActivity().startActivity(intent); return; } */ CustomApplication.getInstance().setCurrentDianDi(entity); startAnimActivity(PersonalActivity.class); } }); } viewHolder.userName.setText(entity.getAuthor().getNick()); L(entity.getAuthor() + ""); if (entity.getAuthor().isV()) { L(entity.getAuthor() + ""); viewHolder.userName.setTextColor(mContext.getResources().getColor(R.color.red)); } else { viewHolder.userName.setTextColor(mContext.getResources().getColor(R.color.dark_blue)); } 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) , 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 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); } }); } 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 (DatabaseUtilC.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 OnClickListener() { boolean oldFav = entity.getMyFav(); @Override public void onClick(View v) { if (entity.getMyLove()) { viewHolder.love.setTextColor(Color.parseColor("#D95555")); return; } /* if (DatabaseUtil.getInstance(mContext).isLoved(entity)) { entity.setMyLove(true); entity.setLove(entity.getLove()); viewHolder.love.setTextColor(Color.parseColor("#D95555")); viewHolder.love.setText(entity.getLove() + ""); 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); DatabaseUtilC.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 OnClickListener() { @Override public void onClick(View v) { ShowToast("分享给好友看哦~"); final TencentShare tencentShare = new TencentShare(CustomApplication.getInstance().getTopActivity(), getQQShareEntity(entity)); tencentShare.shareToQQ(); } }); viewHolder.comment.setOnClickListener(new 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.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //收藏 ShowToast("收藏"); onClickFav(v, entity); } }); return convertView; } private TencentShareEntity getQQShareEntity(DianDi qy) { String title = "这里好多美丽的风景"; String comment = "来领略最美的风景吧"; String img = null; if (qy.getContentfigureurl() != null) { img = qy.getContentfigureurl().getFileUrl(mContext); } else { img = TencentShareConstants.DEFAULT_IMG_URL; } String summary = qy.getContent(); TencentShareEntity entity = new TencentShareEntity(title, img, TencentShareConstants.WEB, summary, comment); 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); } }); } } } private void getMyFavourite() { User user = BmobUser.getCurrentUser(mContext, User.class); if (user != null) { BmobQuery<DianDi> query = new BmobQuery<DianDi>(); query.addWhereRelatedTo("favorite", new BmobPointer(user)); query.include("user"); query.order("createdAt"); query.setLimit(Constant.NUMBERS_PER_PAGE); query.findObjects(mContext, new FindListener<DianDi>() { @Override public void onSuccess(List<DianDi> data) { L.i(TAG, "get fav success!" + data.size()); ShowToast("fav size:" + data.size()); } @Override public void onError(int arg0, String arg1) { ShowToast("获取收藏失败。请检查网络~"); } }); } else { //前往登录注册界面 ShowToast("获取收藏前请先登录。"); Intent intent = new Intent(); intent.setClass(mContext, LoginActivity.class); CustomApplication.getInstance().getTopActivity().startActivityForResult(intent, Constant.GET_FAVOURITE); } } public static class ViewHolder { public ImageView userLogo; public TextView userName; public TextView contentText; public ImageView contentImage; public ImageView favMark; public TextView love; public TextView hate; public TextView share; public TextView comment; private WaterDrop waterDrop; } }