Android ListView得到焦点后之前选中的项无法突出显示

Android ListView失去焦点后之前选中的项无法突出显示
遇到一个难题了,请教大家了.预祝大家五一快乐~

ListView有焦点时:选中的项会高亮显示
但是失去焦点时,ListView中所有的项都成一样的,怎么可以让之前选中的项与其他的项有不同的显示(高亮或者改变字体都行).

再次谢谢各位好心人啊 

附上有误的代码:
 
Java code

rightList.setOnFocusChangeListener(new AdapterView.OnFocusChangeListener() {

@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
//将第一个列表中被选中项高亮红色显示
if(!hasFocus&&(AdapterView)v==rightList)
{
      //dCurrentColorModeIndex为之前已经选中项的位置,记录下来
    /*                        
for(int i=0;i<((ListView)v).getCount();i++){
     View vi=rightList.getChildAt(i);
     if (dCurrentColorModeIndex == i) {
                                vi.setBackgroundColor(Color.RED);}   
     else {                            vi.setBackgroundColor(Color.TRANSPARENT);
    }
                        
                        
    }*/
}
                
                
}
        
 });




------解决方案--------------------
给你个思路,你试试可以不,定义一个全局变量int pos,对每次点击List做一个监听,得到一个int position赋值给全局变量,这样在用 View vi=rightList.getChildAt(pos); vi.setBackgroundColor(Color.RED);
这样应该可以了吧
------解决方案--------------------
探讨

引用:
给你个思路,你试试可以不,定义一个全局变量int pos,对每次点击List做一个监听,得到一个int position赋值给全局变量,这样在用 View vi=rightList.getChildAt(pos); vi.setBackgroundColor(Color.RED);
这样应该可以了吧

dCurrentColorMode……

------解决方案--------------------
View vi=rightList.getChildAt(pos); listView是一个ViewGroup所以应该得到的是你点击的那一列的view,是获取不到这个vi吗?
------解决方案--------------------
能不能生命一个全局的View,每次把当前选中的View赋值给他。
当焦点发生改变以后,在去拿这个全局View,对他进行一些操作啊。
具体没做过这样的功能,只是个人的想法。希望对你有用。
------解决方案--------------------
这个要结合自己写的适配器,我不太清楚你适配器是怎么写的,具体的很简单,你首先定义一个全局的 int positionSelect=0(默认第一行被选中);在适配器中的getView(int position, View convertView, ViewGroup parent)中判断if(positionSelect==position){
convertView.setBackgroundDrawable(R.color.city_color);
}else{
convertView.setBackgroundDrawable(R.color.uncity_color);
}
在list.setOnItemClickListener()中有参数position(即就是arg2),将position传到适配器中,再调用adtapter.notifyDataSetChanged(),方法即可,很easy!