最近,我设法在android中创建一个自定义列表视图,在列表中显示图像。但是,我有一个我无法解决的问题。 我试图做的很简单,1。将闪烁的图标显示在列表项上,该列表项与通过web的json数据具有相同的日期。 2.显示列表视图的第2和第3位置的图像。 3.对于列表项的其余部分,将不会显示图像。
我在Custom适配器的getView方法中有一个简单的编码,它实际上将当前日期与通过web从json数据中检索的日期进行比较。我已经设置了我正在使用的功能。
如果当前日期等于json数据的日期,它将显示闪烁的图像(出于测试目的,我正在使用2015/05/14)。如果位置等于第2或第3位,则显示图标。否则什么都没有。 但是,一些图像显示在列表视图的随机位置。我的代码中有一些错误吗?怎么可能不显示不符合条件的图标?
if (days.get(position).trim().toString().equals("2015/05/14")||days.get(position).trim().toString()=="2015/05/14") {
holder.left.setBackgroundResource(R.drawable.blinker);
AnimationDrawable frameAnimation = (AnimationDrawable) holder.left
.getBackground();
// Start the animation (looped playback by default).
frameAnimation.start();
}else{
holder.left.setImageResource(android.R.color.transparent);
}
if(position==1||position==2){
holder.left.setImageResource(R.drawable.new1);
}else{
holder.left.setImageResource(android.R.color.transparent);
}
if(position==getCount()-1){
holder.left.setImageResource(android.R.color.transparent);
}
return convertView;
}
答案 0 :(得分:1)
if (days.get(position).trim().toString().equals("2015/05/14")||days.get(position).trim().toString()=="2015/05/14") {
holder.left.setBackgroundResource(R.drawable.blinker);
AnimationDrawable frameAnimation = (AnimationDrawable) holder.left
.getBackground();
// Start the animation (looped playback by default).
frameAnimation.start();
// set variable with index of blinking row
mBlinkingIndex = position;
}else{
holder.left.setImageResource(android.R.color.transparent);
}
在getView()
的后续调用中,我们使用mBlinkingIndex
来确定。
因为我们需要使用drawable new1
if((position = (mBlinkingIndex+1) || (position == (mBlinkingIndex+2)){
// this row is special
holder.left.setImageResource(R.drawable.new1);
}else{
// this row is not special
holder.left.setImageResource(android.R.color.transparent);
}
因此,getView()
将如下所示:
if (days.get(position).trim().toString().equals("2015/05/14")||days.get(position).trim().toString()=="2015/05/14") {
holder.left.setBackgroundResource(R.drawable.blinker);
AnimationDrawable frameAnimation = (AnimationDrawable) holder.left
.getBackground();
// Start the animation (looped playback by default).
frameAnimation.start();
// set variable with index of blinking row
mBlinkingIndex = position;
}else{
holder.left.setImageResource(android.R.color.transparent);
}
if((position = (mBlinkingIndex+1) || (position == (mBlinkingIndex+2)){
// this row is special
holder.left.setImageResource(R.drawable.new1);
}else{
// this row is not special
holder.left.setImageResource(android.R.color.transparent);
}