本帖最后由 zhuyakk 于 2013-04-02 10:49:05 编辑

解决方案 »

  1.   

    onclick只会执行一次 你点击哪个项就传入相应的参数, 第一段程序没看出什么毛病,第二段程序有点乱 clickflag=1;
                                    listView.clearAnimation();
                                    listView.getChildAt(currIndex).startAnimation(tbig);
                                    if(clickflag==1){
                                            listView.getChildAt(recordpreviousindex).startAnimation(tsmall);
                                    } 
    像这样的代码 质量太差了 
    反正看你这段代码必定有两次的startAnimation,自己再根据你们的需求好好整理一下逻辑
      

  2.   

    已经搞定。在 listView.getChildAt(recordpreviousindex).startAnimation(tsmall);前加个for循环清除每个item的动画。clickflag是逻辑混乱产物 = =onclick中的updatemusiclist()是这样的,想问下你notifyDataSetInvalidated()的刷新步骤,debug看是先执行完start再刷新。
    因为点击时调用了这个函数,按键盘上下键也调用了,但是刷新顺序不同,点击时先刷新再动画,而键盘是先动画再刷新求解
    public void updatemusiclist(){
    temp.clear();
    temp.addAll(list);
    list.clear();

    for(int i=0;i<temp.size();i++){
    tempe=i+orienIndex;
    if(tempe>=list.size()){
    tempe=tempe%temp.size();
    }
    else if(tempe<0){
    tempe=temp.size()+tempe;
    }
    if(tempe==FIXMUSICINDEX)
    recordpreviousindex=i;
    if(tempe<temp.size())
    list.add(temp.get(tempe));
    }//end for
    currIndex=FIXMUSICINDEX;
    listView.requestFocus();
    listView.setSelection(FIXMUSICINDEX);
    //***************************************
    ma.notifyDataSetInvalidated();  
            //***************************************
    start();
    }
      

  3.   

    http://blog.csdn.net/bailyzheng/article/details/8536806
    一般情况是notifyDataSetChanged,我不知道你是属于数据源失效还是更改,请参考以上链接!键盘应该是直接出发刷新然后在getView里面出发动画,但是你的onclick也手动出发刷新了应该是一样的,
    不过onclick中你又手动去触发动画了,这点可能会有影响.
    其实没必要这么复杂,简化一下逻辑吧