package org.qii.weiciyuan.ui.adapter;
import org.qii.weiciyuan.R;
import org.qii.weiciyuan.bean.UserBean;
import org.qii.weiciyuan.support.asyncdrawable.TimeLineBitmapDownloader;
import org.qii.weiciyuan.support.lib.TimeLineAvatarImageView;
import org.qii.weiciyuan.support.settinghelper.SettingUtility;
import org.qii.weiciyuan.support.utils.ThemeUtility;
import org.qii.weiciyuan.support.utils.Utility;
import org.qii.weiciyuan.support.utils.ViewUtility;
import android.support.v4.app.Fragment;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import java.util.List;
/**
* User: qii
* Date: 12-9-19
*/
public class UserListAdapter extends BaseAdapter {
protected List<UserBean> bean;
protected Fragment activity;
protected LayoutInflater inflater;
protected ListView listView;
protected TimeLineBitmapDownloader commander;
protected int checkedBG;
protected int defaultBG;
public UserListAdapter(Fragment activity, List<UserBean> bean, ListView listView) {
this.bean = bean;
this.commander = TimeLineBitmapDownloader.getInstance();
this.inflater = activity.getActivity().getLayoutInflater();
this.listView = listView;
this.activity = activity;
defaultBG = activity.getResources().getColor(R.color.transparent);
checkedBG = ThemeUtility.getColor(R.attr.listview_checked_color);
listView.setRecyclerListener(new AbsListView.RecyclerListener() {
@Override
public void onMovedToScrapHeap(View view) {
ViewHolder holder = (ViewHolder) view.getTag();
if (holder == null) {
return;
}
holder.avatar.setImageDrawable(null);
}
});
}
private List<UserBean> getList() {
return bean;
}
@Override
public int getCount() {
if (getList() != null && getList().size() > 0) {
return getList().size();
} else {
return 0;
}
}
@Override
public Object getItem(int position) {
return getList().get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null || convertView.getTag() == null) {
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.user_listview_item_layout, parent, false);
holder.username = ViewUtility.findViewById(convertView, R.id.username);
holder.content = ViewUtility.findViewById(convertView, R.id.content);
holder.avatar = (TimeLineAvatarImageView) convertView.findViewById(R.id.avatar);
holder.listview_root = ViewUtility.findViewById(convertView, R.id.listview_root);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
configViewFont(holder);
configLayerType(holder);
bindViewData(holder, position);
return convertView;
}
private void bindViewData(ViewHolder holder, int position) {
holder.listview_root.setBackgroundColor(defaultBG);
if (listView.getCheckedItemPosition() == position + 1) {
holder.listview_root.setBackgroundColor(checkedBG);
}
UserBean user = getList().get(position);
holder.avatar.checkVerified(user);
holder.avatar.setPressesStateVisibility(false);
holder.username.setText(user.getScreen_name());
String image_url = user.getProfile_image_url();
if (!TextUtils.isEmpty(image_url)) {
commander.downloadAvatar(holder.avatar.getImageView(), user, false);
}
holder.content.setText(user.getDescription());
}
private void configLayerType(ViewHolder holder) {
boolean disableHardAccelerated = SettingUtility.disableHardwareAccelerated();
if (!disableHardAccelerated) {
return;
}
int currentWidgetLayerType = holder.username.getLayerType();
if (View.LAYER_TYPE_SOFTWARE != currentWidgetLayerType) {
holder.username.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
if (holder.content != null) {
holder.content.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
}
}
private void configViewFont(ViewHolder holder) {
int prefFontSizeSp = SettingUtility.getFontSize();
float currentWidgetTextSizePx;
currentWidgetTextSizePx = holder.content.getTextSize();
if (Utility.sp2px(prefFontSizeSp) != currentWidgetTextSizePx) {
holder.content.setTextSize(prefFontSizeSp);
holder.username.setTextSize(prefFontSizeSp);
}
}
private class ViewHolder {
TextView username;
TextView content;
TimeLineAvatarImageView avatar;
RelativeLayout listview_root;
}
public void removeItem(UserBean item) {
getList().remove(item);
notifyDataSetChanged();
}
public void update(UserBean oldValue, UserBean newValue) {
int index = getList().indexOf(oldValue);
getList().remove(index);
getList().add(index, newValue);
notifyDataSetChanged();
}
}