Android ViewHolder的作用与用法
2015-11-09 10:50
441 查看
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()
dbfe
+ “分”);
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(“兑换日期:”);
}
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()
dbfe
+ “分”);
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; }
相关文章推荐
- android 内存泄漏 与分析
- Android线程封装基类Thread
- Android保存mp4
- Android NDK学习记录
- Android之adb使用之一不是内部或外部命令
- Android存储数据的方法----SharedPreferences的使用
- android SDK manager 无法获取更新版本列表
- 关于android方向传感器的使用
- Android 监听wifi总结
- android性能优化SparseArray和ArrayMap
- Android开源项目WheelView使用示例
- Android M 部分API变动研究
- Android Service生命周期详解
- 【凯子哥带你学Framework】Activity界面显示全解析
- Android的图像处理类Bitmap各种功能实现的详细介绍
- android sdk安装及开发环境部署
- 安卓新出病毒幽灵推,回顾android历史上的那些吸费病毒
- android查看剩余电量
- Android HAL实例解析
- 贝塞尔曲线学习