我有一个自定义列表视图,显示图像图标和文本。我遇到了ViewHolder的问题。我想简单地显示仅在第一个位置(可能是0的位置)动画的ImageView,但是,即使条件是位置== 0,imageView也会在自定义列表视图中的随机位置弹出。 滚动列表视图时会发生这种情况。每当我向下滚动时,会显示更多图像图标。我好几天都无法解决这个问题。我在下面设置了示例代码。
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
final ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.customloto7newpack,
null);
holder = new ViewHolder();
// setting up the basic things in here
holder.left = (ImageView) convertView
.findViewById(R.id.newlotoicons);
holder.txt_maintext = (TextView) convertView // kumi
.findViewById(R.id.loto7newdesu);
holder.txt_lotodate = (TextView) convertView
.findViewById(R.id.datenew7);
// You can just add some new stuffs in here
// new addioitnal
holder.lotoname = (TextView) convertView
.findViewById(R.id.lotoname);
// holder.txt_mtext = (TextView) convertView
// .findViewById(R.id.txt_mtext);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
if (itemkey == 1) {
holder.lotoname.setText("itemname");
// setting up the 3 variables in here
holder.txt_maintext.setText(kai.get(position));
holder.txt_lotodate.setText("today" + loto_date.get(position));
if (position == 0) {
if (newIconParam.get(0).equals("OK")
|| newIconParam.get(0) == "OK") {
dateonly = loto_date.get(0).trim().toString();
dateonly2 = dateonly.replaceAll("\\(.*?\\) ?", "");
String date3 = dateonly2.trim();// use this to check
if (date3.equals(today)) {
logicflag = true;
holder.left.setBackgroundResource(R.drawable.blinker);
AnimationDrawable frameAnimation = (AnimationDrawable) holder.left
.getBackground();
frameAnimation.start();
} else if (!date3
.equals(today)) {
holder.left.setImageResource(R.drawable.new_icon);
// holder.left.setImageResource(android.R.color.transparent);
}
} else {
}
} else {
holder.left.setImageResource(android.R.color.transparent);
}
实际上有更多.....
答案 0 :(得分:0)
我认为你应该在其他视图上停止动画。 尝试添加
((AnimationDrawable) holder.left).stop();
正好在
之上holder.left.setImageResource(android.R.color.transparent);
在else
声明中。