本帖最后由 zhuyakk 于 2013-03-26 17:44:53 编辑

解决方案 »

  1.   

    谢谢楼上,是问题之一。
    下面是解决方法,不过又出现新问题了。
    这个问题已经解决了,以下是解决办法:
    我把自定义的MusicListAdapter中的getView这样改写:
    [mw_shl_code=java,true]                       if (convertView == null) {
                                    convertView = getLayoutInflater().inflate(R.layout.list_item,
                                                    null);
                            }
                            TextView tv_music_name = (TextView) convertView
                                            .findViewById(R.id.textView1_music_name);        
                            int testposition=position;
                            //*********************************修改播放列表显示
                            tv_music_name.setTextColor(Color.WHITE);
                            tv_music_name.setText(list.get(position).substring(18).replace(".mp3", " ").replace("_", "-"));
                            if(position==FIXMUSICINDEX){//位置FIXMUSICINDEX固定被选中
                                    tv_music_name.setAlpha(255);
                                    tv_music_name.setTextSize(23);
                                    tv_music_name.setTextColor(Color.rgb(30, 144, 255));
                                    tv_music_name.setBackgroundResource(R.drawable.colorchange);
                            }
                            else
                            {
                                    tv_music_name.setAlpha(100);
                                    tv_music_name.setTextSize(19);                        
                            }                        
                            return convertView;
                    }        
            }//**end MusicListAdapter[/mw_shl_code]
    OnItemClick这样改写:
    [mw_shl_code=java,true]       @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    temp.clear();
                    orienIndex=position-FIXMUSICINDEX;
                    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<temp.size())
                                    list.add(temp.get(tempe));
                            currIndex=FIXMUSICINDEX;
                    }
    //***************************************
                    ma.notifyDataSetInvalidated();  
    //***************************************
                    start();
            }[/mw_shl_code]——————————————————————————————————————
    但是第一行也被选中了肿么破?如下图:目测是getview里面if(position==FIXMUSICINDEX)有问题 但debug发现position为0的时候并没有执行if中的语句而是执行了else。
    求解决!!!

      

  2.   

     if(position==FIXMUSICINDEX){
    }
    else{
    这里把背景颜色还原
    }