无法将图像移动到android的自定义列表视图中的所需位置

时间:2015-05-15 07:13:39

标签: android json listview android-listview

最近,我设法在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;
}

1 个答案:

答案 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

设置第2行和第3行
    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);
    }