/**
*
*/
package com.photoshare.service.photos.views;
import java.util.List;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import com.photoshare.service.photos.PhotoBean;
import com.photoshare.service.users.UserInfo;
import com.photoshare.tabHost.R;
import com.photoshare.utils.async.AsyncUtils;
import com.photoshare.view.listview.MyListView;
import com.photoshare.view.listview.MyListView.OnRefreshListener;
/**
* @author Aron
*
*/
public class FeedsView {
private Context context;
private View baseView;
private MyListView feedsView;
private FeedsAdapter mFeedsAdapter;
private List<PhotoBean> feeds;
private AsyncUtils async;
/**
* @param context
* @param baseView
* @param feeds
* @param async
*/
public FeedsView(Context context, View baseView, List<PhotoBean> feeds,
AsyncUtils async) {
super();
this.context = context;
this.baseView = baseView;
this.feeds = feeds;
this.async = async;
}
public void applyView() {
feedsView = (MyListView) baseView.findViewById(R.id.feedsList);
feedsView.setonRefreshListener(new OnRefreshListener() {
public void onRefresh() {
if (mFeedsActionListener != null) {
mFeedsActionListener.OnRefresh();
}
}
});
mFeedsAdapter = new FeedsAdapter();
feedsView.setAdapter(mFeedsAdapter);
}
private class FeedsAdapter extends ArrayAdapter<PhotoBean> {
/*
* @param context
*
* @param textViewResourceId
*/
public FeedsAdapter() {
super(context, R.layout.simple_list_item_feeds, feeds);
}
/*
* (non-Javadoc)
*
* @see android.widget.Adapter#getView(int, android.view.View,
* android.view.ViewGroup)
*/
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
FeedItemView feeds;
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (rowView == null) {
rowView = inflater.inflate( R.layout.simple_list_item_feeds, null);
PhotoBean feed = getItem(position);
feeds = new FeedItemView(rowView, async, feed);
rowView.setTag(feeds);
} else {
feeds = (FeedItemView) rowView.getTag();
}
feeds.registerCallback(mCallback);
feeds.applyView();
return rowView;
}
}
public void addPhotoBean(PhotoBean photo) {
if (photo != null) {
feeds.add(photo);
mFeedsAdapter.notifyDataSetChanged();
}
}
private FeedItemView.ICallback mCallback = new FeedItemView.ICallback() {
public void OnNameClick(UserInfo info) {
if (mFeedsActionListener != null) {
mFeedsActionListener.OnNameClick(info);
}
}
public void OnCommentListClick(PhotoBean photo) {
if (mFeedsActionListener != null) {
mFeedsActionListener.OnCommentListClick(photo);
}
}
public void OnLikeListClick(PhotoBean like) {
if (mFeedsActionListener != null) {
mFeedsActionListener.OnLikeListClick(like);
}
}
public void OnLikeClick(PhotoBean photo) {
if (mFeedsActionListener != null) {
mFeedsActionListener.OnLikeClick(photo);
}
}
public void OnUserHeadLoaded(ImageView image, Drawable drawable,
String url) {
if (mFeedsActionListener != null) {
mFeedsActionListener.OnUserHeadLoaded(image, drawable, url);
}
}
public void OnFeedPhotoLoaded(ImageView image, Drawable drawable,
String url) {
if (mFeedsActionListener != null) {
mFeedsActionListener.OnFeedPhotoLoaded(image, drawable, url);
}
}
public void OnUserHeadDefault(ImageView image) {
if (mFeedsActionListener != null) {
mFeedsActionListener.OnUserHeadDefault(image);
}
}
public void OnFeedPhotoDefault(ImageView image) {
if (mFeedsActionListener != null) {
mFeedsActionListener.OnFeedPhotoDefault(image);
}
}
};
public void registerCallback(OnFeedsActionListener actionListener) {
this.mFeedsActionListener = actionListener;
}
public void onRefreshComplete() {
feedsView.onRefreshComplete();
}
private OnFeedsActionListener mFeedsActionListener;
public interface OnFeedsActionListener {
public void OnNameClick(UserInfo info);
public void OnCommentListClick(PhotoBean photo);
public void OnLikeListClick(PhotoBean photo);
public void OnLikeClick(PhotoBean photo);
public void OnRefresh();
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);
}
}