package net.oschina.gitapp.adapter;
import java.util.Date;
import java.util.List;
import net.oschina.gitapp.R;
import net.oschina.gitapp.bean.Project;
import net.oschina.gitapp.bean.URLs;
import net.oschina.gitapp.bean.User;
import net.oschina.gitapp.common.BitmapManager;
import net.oschina.gitapp.common.StringUtils;
import net.oschina.gitapp.common.UIHelper;
import android.content.Context;
import android.graphics.BitmapFactory;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.TextView;
/**
* 个人项目列表适配器
* @created 2014-05-12
* @author 火蚁(http://my.oschina.net/LittleDY)
*
* 最后更新:
* 更新者:
*/
public class MySelfListProjectAdapter extends MyBaseAdapter<Project> {
private BitmapManager bmpManager;
static class ListItemView {
public int index;
public ImageView face;
public ImageView flag;// 项目标识
public TextView project_name;
public TextView description;//项目描述
public TextView updateData;//日期
public ImageView languageImage;
public TextView language;//类型
public TextView star;//加星数
public TextView fork;//fork数
}
public MySelfListProjectAdapter(Context context, List<Project> data, int resource) {
super(context, data, resource);
this.bmpManager = new BitmapManager(BitmapFactory.decodeResource(
context.getResources(), R.drawable.widget_dface_loading));
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ListItemView listItemView = null;
if (convertView == null) {
//获取list_item布局文件的视图
convertView = listContainer.inflate(this.itemViewResource, null);
listItemView = new ListItemView();
//获取控件对象
listItemView.face = (ImageView) convertView.findViewById(R.id.myself_project_listitem_userface);
listItemView.project_name = (TextView) convertView.findViewById(R.id.myself_project_listitem_name);
listItemView.flag = (ImageView) convertView.findViewById(R.id.myself_project_listitem_flag);
listItemView.description = (TextView) convertView.findViewById(R.id.myself_project_listitem_description);
listItemView.updateData = (TextView) convertView.findViewById(R.id.myself_project_listitem_date);
listItemView.languageImage = (ImageView) convertView.findViewById(R.id.myself_project_listitem_language_image);
listItemView.language = (TextView) convertView.findViewById(R.id.myself_project_listitem_language);
listItemView.star = (TextView) convertView.findViewById(R.id.myself_project_listitem_star);
listItemView.fork = (TextView) convertView.findViewById(R.id.myself_project_listitem_fork);
//设置控件集到convertView
convertView.setTag(listItemView);
}else {
listItemView = (ListItemView)convertView.getTag();
}
initInfo(listItemView, position);
return convertView;
}
private void initInfo(ListItemView listItemView, int position) {
final Project project = listData.get(position);
// 1.加载头像
String portraitURL = project.getOwner().getNew_portrait();
if (portraitURL.endsWith("portrait.gif")) {
listItemView.face.setImageResource(R.drawable.mini_avatar);
} else {
bmpManager.loadBitmap(portraitURL, listItemView.face);
}
listItemView.face.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
User user = project.getOwner();
if (user == null) {
return;
}
UIHelper.showUserInfoDetail(context, user, null);
}
});
listItemView.project_name.setText(project.getOwner().getName() + " / " + project.getName());
Date last_push_at = project.getLast_push_at() != null ? project.getLast_push_at() : project.getCreatedAt();
listItemView.updateData.setText("更新于: " + StringUtils.friendly_time(last_push_at));
// 判断项目的类型,显示不同的图标(私有项目、公有项目、fork项目)
if (project.getParent_id() != null) {
listItemView.flag.setBackgroundResource(R.drawable.project_flag_fork);
} else if (project.isPublic()) {
listItemView.flag.setBackgroundResource(R.drawable.project_flag_public);
} else {
listItemView.flag.setBackgroundResource(R.drawable.project_flag_private);
}
// 判断是否有项目的介绍
String descriptionStr = project.getDescription();
if (!StringUtils.isEmpty(descriptionStr)) {
listItemView.description.setText(descriptionStr);
} else {
listItemView.description.setText(R.string.msg_project_empty_description);
}
// 显示项目的star、fork、language信息
listItemView.star.setText(project.getStars_count().toString());
listItemView.fork.setText(project.getForks_count().toString());
listItemView.language.setVisibility(View.GONE);
listItemView.languageImage.setVisibility(View.GONE);
String language = project.getLanguage() != null ? project.getLanguage() : "";
if (project.getLanguage() != null) {
listItemView.language.setText(language);
listItemView.language.setVisibility(View.VISIBLE);
listItemView.languageImage.setVisibility(View.VISIBLE);
}
}
}