package com.jasonchen.microlang.adapter;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.text.ClipboardManager;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.AbsListView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.PopupMenu;
import android.widget.TextView;
import android.widget.Toast;
import com.jasonchen.microlang.R;
import com.jasonchen.microlang.activitys.UserActivity;
import com.jasonchen.microlang.activitys.WeiboDetailActivity;
import com.jasonchen.microlang.activitys.WriteReplyActivity;
import com.jasonchen.microlang.beans.CommentBean;
import com.jasonchen.microlang.beans.CommentListBean;
import com.jasonchen.microlang.beans.MessageBean;
import com.jasonchen.microlang.beans.RepostListBean;
import com.jasonchen.microlang.beans.UserBean;
import com.jasonchen.microlang.dao.CommentsTimeLineByIdDao;
import com.jasonchen.microlang.dao.DestroyCommentDao;
import com.jasonchen.microlang.dao.RepostsTimeLineByIdDao;
import com.jasonchen.microlang.exception.WeiboException;
import com.jasonchen.microlang.interfaces.ISimRayDrawable;
import com.jasonchen.microlang.swiperefresh.LoadListView;
import com.jasonchen.microlang.tasks.MyAsyncTask;
import com.jasonchen.microlang.utils.GlobalContext;
import com.jasonchen.microlang.utils.HackyMovementMethod;
import com.jasonchen.microlang.utils.Utility;
import com.jasonchen.microlang.utils.ViewUtility;
import com.jasonchen.microlang.utils.file.FileLocationMethod;
import com.jasonchen.microlang.view.HackyTextView;
import com.jasonchen.microlang.view.TimeLineRoundAvatarImageView;
import com.jasonchen.microlang.view.TimeTextView;
import com.jasonchen.microlang.workers.PictureBitmapDrawable;
import com.jasonchen.microlang.workers.TimeLineBitmapDownloader;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* jasonchen
* 2015/04/10
*/
public class FollowersAdapter extends BaseAdapter {
private Set<Integer> tagIndexList = new HashSet<Integer>();
private Activity activity;
private LayoutInflater mInflater;
private LoadListView listView;
private List<UserBean> list;
public FollowersAdapter(Activity activity, List<UserBean> list, LoadListView listview) {
super();
this.activity = activity;
this.mInflater = LayoutInflater.from(activity);
this.list = list;
this.listView = listview;
this.listView.setRecyclerListener(new AbsListView.RecyclerListener() {
@Override
public void onMovedToScrapHeap(View view) {
Integer index = (Integer) view
.getTag(R.string.listview_index_tag);
if (index == null) {
return;
}
for (Integer tag : tagIndexList) {
ViewHolder holder = (ViewHolder) view.getTag(tag);
if (holder != null) {
Drawable drawable = holder.avatar.getImageView()
.getDrawable();
clearAvatarBitmap(holder, drawable);
if (!tag.equals(index)) {
holder.layout.removeAllViewsInLayout();
holder.layout = null;
view.setTag(tag, null);
}
}
}
}
void clearAvatarBitmap(ViewHolder holder, Drawable drawable) {
if (!(drawable instanceof PictureBitmapDrawable)) {
holder.avatar.setImageDrawable(null);
holder.avatar.getImageView().clearAnimation();
}
}
});
}
private Activity getActivity() {
return activity;
}
public void setList(List<UserBean> list){
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null || convertView.getTag(R.drawable.ic_launcher + getItemViewType(position)) == null) {
convertView = mInflater.inflate(R.layout.follow_fan_normal_item, null);
holder = new ViewHolder();
holder.avatar = ViewUtility.findViewById(convertView, R.id.avatar);
holder.username = ViewUtility.findViewById(convertView, R.id.username);
holder.description = ViewUtility.findViewById(convertView, R.id.description);
convertView.setTag(R.drawable.ic_launcher + getItemViewType(position), holder);
convertView.setTag(R.string.listview_index_tag, R.drawable.ic_launcher + getItemViewType(position));
tagIndexList.add(R.drawable.ic_launcher + getItemViewType(position));
} else {
holder = (ViewHolder) convertView.getTag(R.drawable.ic_launcher + getItemViewType(position));
}
ViewGroup.LayoutParams params = holder.avatar.getLayoutParams();
TimeLineBitmapDownloader.getInstance().downloadAvatar(holder.avatar, list.get(position), false);
holder.avatar.checkVerified(list.get(position));
holder.username.setText(list.get(position).getScreen_name());
if(!TextUtils.isEmpty(list.get(position).getDescription())){
holder.description.setVisibility(View.VISIBLE);
holder.description.setText(list.get(position).getDescription());
}else{
holder.description.setVisibility(View.GONE);
}
convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = UserActivity.newIntent(getActivity(), list.get(position));
getActivity().startActivity(intent);
getActivity().overridePendingTransition(R.anim.push_left_in, R.anim.stay);
}
});
return convertView;
}
private static class ViewHolder {
LinearLayout layout;
TimeLineRoundAvatarImageView avatar;
TextView username;
TextView description;
}
}