我正在尝试从列表视图开始一项新活动。我正在从数据库中加载一些数据并在另一个活动中打开它......当我使用来自我的 customAdapter 的 OnItemClickListener 和 getTag 时工作正常......但结果显示在 listview 上的某些项目中重复。搜索一些主题...我找到了资源 ViewHolder。
它解决了重复问题,但我无法从 holder.getTag() 开始新活动。
我的观点持有人
static class ViewHolder {
TextView hs;
TextView hi;
TextView ha;
ImageView ho;
ImageView hm;
}
我的 customAdapter 查看代码
public View getView(int position, View convertView, ViewGroup parent) {
DataAdapter.ItemLista item = itens.get(position);
final ViewHolder holder;
if(convertView==null){
convertView = inflater.inflate(R.layout.linha_listview, null);
holder = new ViewHolder();
holder.hi = (TextView)convertView.findViewById(R.linhaLista.id);
holder.hs = (TextView)convertView.findViewById(R.linhaLista.musica);
holder.ha = (TextView)convertView.findViewById(R.linhaLista.cantor);
holder.ho = (ImageView)convertView.findViewById(R.linhaLista.cat_oracao);
holder.hm = (ImageView)convertView.findViewById(R.linhaLista.cat_missa);
/*if (imgMissa.equals(null)) {
missa.setImageResource(R.drawable.blank);
}else if(imgOra.equals("louvor")) {
missa.setImageResource(R.drawable.louvor);
}else if(imgOra.equals("adoracao")) {
missa.setImageResource(R.drawable.adoracao);
}*/
convertView.setTag(holder);
Log.v(String.valueOf(holder),"valor do setholder");
}else {
holder = (ViewHolder) convertView.getTag();
Log.v(String.valueOf(holder),"valor do getholder");
}
holder.hi.setText(String.valueOf(item.id));
holder.hs.setText(item.musica);
holder.ha.setText(item.cantor);
String imgOra = item.oracao;
if (imgOra.equals(null)) {
holder.ho.setImageResource(R.drawable.blank);
}else if(imgOra.equals("louvor")) {
holder.ho.setImageResource(R.drawable.louvor);
}else if(imgOra.equals("adoracao")) {
holder.ho.setImageResource(R.drawable.adoracao);
}
return convertView;
}
在这种情况下,我需要将字段 holder.hi 作为标签。任何人都知道如何解决它?