package com.photoshare.service.photos.views; import android.graphics.drawable.Drawable; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnLongClickListener; import android.widget.ImageView; import android.widget.TextView; import com.photoshare.service.photos.PhotoBean; import com.photoshare.service.users.UserInfo; import com.photoshare.tabHost.R; import com.photoshare.utils.async.AsyncImageLoader; import com.photoshare.utils.async.AsyncUtils; import com.photoshare.view.UserTextView; public class FeedItemView { private View baseView; private UserTextView mFeedUserName; private ImageView mFeedUserHead; private TextView mFeedDate; private TextView mFeedFavor; private UserTextView mFeedLike; private UserTextView mFeedComment; private ImageView hintImageView; private ImageView mFeedPhoto; private AsyncUtils async; private PhotoBean photo; /** * @param mFeedPhoto * @param async */ public FeedItemView(View baseView, AsyncUtils async, PhotoBean photo) { super(); this.baseView = baseView; hintImageView = (ImageView) baseView.findViewById(R.id.image); this.async = async; this.photo = photo; } public void applyView() { mFeedUserName = new UserTextView( (TextView) baseView.findViewById(R.id.feedsUserName), new UserInfo.UserInfoBuilder().ID(photo.getUid()) .Name(photo.getUname()).build(), photo.getUname()); mFeedUserName.registerListener(OnNameClickListener); mFeedUserName.apply(); mFeedUserHead = (ImageView) baseView.findViewById(R.id.feedsUserHead); mFeedComment = new UserTextView( (TextView) baseView.findViewById(R.id.feedComment), null, "评论" + photo.getCommentCount()); mFeedComment.registerListener(OnCommentClickListener); mFeedComment.apply(); mFeedDate = (TextView) baseView.findViewById(R.id.feedsDate); mFeedLike = new UserTextView( (TextView) baseView.findViewById(R.id.feedLikeList), null, "喜欢" + photo.getLikesCount()); mFeedLike.registerListener(OnLikeClickListener); mFeedLike.apply(); mFeedFavor = (TextView) baseView.findViewById(R.id.feedLike); mFeedFavor.setOnClickListener(new OnClickListener() { public void onClick(View v) { if (mCallback != null) { mCallback.OnLikeClick(photo); } } }); mFeedPhoto = (ImageView) baseView.findViewById(R.id.feedPhoto); mFeedDate.setText(photo.getCreateTime()); load(); } private void load() { String url = photo.getUrlLarge(); if (url == null) { async.loadDrawableFromFile(photo.getAbsolutePath(), new AsyncImageLoader.ImageCallback() { public void imageLoaded(Drawable imageDrawable, String imageUrl) { if (mCallback != null) { mCallback.OnFeedPhotoLoaded(mFeedPhoto, imageDrawable, imageUrl); } } public void imageDefault() { if (mCallback != null) { mCallback.OnFeedPhotoDefault(mFeedPhoto); } } }); } else { async.loadDrawableFromWeb(url, new AsyncImageLoader.ImageCallback() { public void imageLoaded(Drawable imageDrawable, String imageUrl) { if (mCallback != null) { mCallback.OnFeedPhotoLoaded(mFeedPhoto, imageDrawable, imageUrl); } } public void imageDefault() { if (mCallback != null) { mCallback.OnFeedPhotoDefault(mFeedPhoto); } } }); mFeedPhoto.setOnLongClickListener(new OnLongClickListener() { public boolean onLongClick(View v) { if (mCallback != null) { mCallback.OnLikeClick(photo); } animation(); return true; } }); } async.loadDrawableFromWeb(photo.getTinyHeadUrl(), new AsyncImageLoader.ImageCallback() { public void imageLoaded(Drawable imageDrawable, String imageUrl) { if (mCallback != null) { mCallback.OnUserHeadLoaded(mFeedUserHead, imageDrawable, imageUrl); } } public void imageDefault() { if (mCallback != null) { mCallback.OnUserHeadDefault(mFeedUserHead); } } }); } private UserTextView.UserTextOnClickListener OnNameClickListener = new UserTextView.UserTextOnClickListener() { public void OnClick(UserInfo info) { // TODO Auto-generated method stub if (mCallback != null) { mCallback.OnNameClick(info); } } }; private UserTextView.UserTextOnClickListener OnCommentClickListener = new UserTextView.UserTextOnClickListener() { public void OnClick(UserInfo info) { // TODO Auto-generated method stub if (mCallback != null) { mCallback.OnCommentListClick(photo); } } }; private UserTextView.UserTextOnClickListener OnLikeClickListener = new UserTextView.UserTextOnClickListener() { public void OnClick(UserInfo info) { // TODO Auto-generated method stub if (mCallback != null) { mCallback.OnLikeListClick(photo); } } }; private ICallback mCallback; public void registerCallback(ICallback mCallback) { this.mCallback = mCallback; } public interface ICallback { public void OnNameClick(UserInfo info); public void OnCommentListClick(PhotoBean photo); public void OnLikeListClick(PhotoBean photo); public void OnLikeClick(PhotoBean photo); public void OnUserHeadLoaded(ImageView image, Drawable drawable, String url); public void OnFeedPhotoLoaded(ImageView image, Drawable drawable, String url); public void OnUserHeadDefault(ImageView image); public void OnFeedPhotoDefault(ImageView image); } private void animation() { hintImageView.setVisibility(View.VISIBLE); hintImageView.bringToFront(); hintImageView.setVisibility(View.GONE); } }