根据Android listview为性能优化,只会生成一屏可见的Item,比如,一屏显示10行Item,滑倒第十一行的时候,第一行不可见,会把第一行的Item资源给第十一行资源使用;具体参见:
http://www.cnblogs.com/over140/archive/2011/03/23/1991100.html我的问题是格式:
Item格式: 动画控件,文字描述 ;如果第一行Item中有个动画控件正在动画时,滑到第十一行的时候,会变成第十一Item的动画控件会变成转动;使用baseAdapter,getView中获取返回Item的View。简单代码如下:public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder;
if(convertView == null)
{
viewHolder = new ViewHolder();
convertView = mInflater.inflate(R.layout.item, null);
viewHolder.imgLeftAvatar = (ImageView) convertView.findViewById(R.id.left_avatar);
viewHolder.tvMsgInfo = (TextView) convertView.findViewById(R.id.info);
convertView.setTag(viewHolder);
}
else
{
viewHolder = (ViewHolder) convertView.getTag();
}

viewHolder.imgLeftAvatar = animationControl;
viewHolder.tvMsgInfo = "hello world";
}

解决方案 »

  1.   

    这个容易解决啊。如果你左边的动画一次只能播放一个的话,就在adapter类里面定义一个 static属性。然后在调用的activity里来控制这个 static属性的值 , 最后在getview()方法里来判断。
    if(selectedPos == position){
        viewHolder.musicIcon.setBackgroundResource(R.drawable.edit_story_musicselected);
    }else{
        viewHolder.musicIcon.setBackgroundResource(R.drawable.edit_story_musicunselected);
    }
    playedPos是我定义的静态属性,musicIcon是一个图片。我的ITEM分为两部分,左边是音乐名字,右边是一个选择图片。