Android ViewHolder的作用与用法
ViewHolder通常出现在适配器里,为的是listview滚动的时候快速设置值,而不必每次都重新创建很多对象,从而提升性能。
public final class ViewHolder {
private TextView tv_OrderNum;
private TextView tv_Status;
private TextView tv_Title;
private TextView tv_money;
private TextView tv_PayScore;
private TextView tv_PtimeName;
private TextView tv_Ptime;
private TextView tv_Type;
}
public View getView(final int arg0, View convertView, ViewGroup arg2) {
// TODO Auto-generated method stub
ViewHolder viewHolder = null;
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(
R.layout.item_scoreexrecord, null);
viewHolder.tv_OrderNum = (TextView) convertView
.findViewById(R.id.tv_OrderNum);
viewHolder.tv_Status = (TextView) convertView
.findViewById(R.id.tv_Status);
viewHolder.tv_Title = (TextView) convertView
.findViewById(R.id.tv_Title);
viewHolder.tv_money = (TextView) convertView
.findViewById(R.id.tv_money);
viewHolder.tv_PayScore = (TextView) convertView
.findViewById(R.id.tv_PayScore);
viewHolder.tv_PtimeName = (TextView) convertView
.findViewById(R.id.tv_PtimeName);
viewHolder.tv_Ptime = (TextView) convertView
.findViewById(R.id.tv_Ptime);
viewHolder.tv_Type = (TextView) convertView
.findViewById(R.id.tv_Type);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.tv_OrderNum.setText(arrayList_ScoreExRecord.get(arg0)
.getOrderNum());
viewHolder.tv_Title.setText(arrayList_ScoreExRecord.get(arg0)
.getTitle());
double money = 0;
if (!CommonTools.isEmpty(arrayList_ScoreExRecord.get(arg0).getMoney())) {
money = CommonTools.string2double(arrayList_ScoreExRecord.get(arg0)
.getMoney());
}
viewHolder.tv_money
.setText(CommonTools.string2double2Unit(money) + “元”);
viewHolder.tv_PayScore.setText(arrayList_ScoreExRecord.get(arg0)
.getPayScore() + “分”);
viewHolder.tv_Ptime.setText(arrayList_ScoreExRecord.get(arg0)
.getPtime());
if (arrayList_ScoreExRecord.get(arg0).getType().equals(“1”)) {
viewHolder.tv_Type.setVisibility(View.VISIBLE);
viewHolder.tv_Type
.setBackgroundResource(R.drawable.app_96_btn_qx_norma);
}
if (arrayList_ScoreExRecord.get(arg0).getType().equals(“2”)) {
viewHolder.tv_Type.setVisibility(View.GONE);
viewHolder.tv_PtimeName.setText(“兑换日期:”);
}
if (arrayList_ScoreExRecord.get(arg0).getStatus().equals("1")) {
viewHolder.tv_Status.setText("未使用");
}
if (arrayList_ScoreExRecord.get(arg0).getStatus().equals("2")) {
viewHolder.tv_Status.setText("已使用");
}
if (arrayList_ScoreExRecord.get(arg0).getStatus().equals("3")) {
viewHolder.tv_Status.setText("已失效");
}
if (arrayList_ScoreExRecord.get(arg0).getStatus().equals("4")) {
viewHolder.tv_Status.setText("已取消");
}
if (arrayList_ScoreExRecord.get(arg0).getStatus().equals("6")) {
viewHolder.tv_Status.setText("使用中");
}
viewHolder.tv_Type.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
// requestCancelExchange(arrayList_ScoreExRecord.get(arg0));
quxiaoDialog(arg0);
}
});
return convertView;
}