本帖最后由 wengshh 于 2011-04-28 15:56:15 编辑

解决方案 »

  1.   

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

  2.   

    dCurrentColorModeIndex就相当是您说的那个全局变量。
    View vi=rightList.getChildAt(pos); 
    这句应该有问题,它得到的View是什么控件啊~~想了很久都不知道怎么改...谢谢你啊
      

  3.   


    View vi=rightList.getChildAt(pos);  得到的View就是你的ListView每个Item所使用的布局或者View。如果你重写了Adapter,这个View就是你Adapter里面getView方法返回出的View。至于到底是一个Layout还是一个View,就看你ListView所用Adapter的实现了。注意要强制转换一下,View貌似不能直接设置背景颜色吧……这点我记不得了,好久不做Android了……顺便打听一下:LZ头像系本人不……是的求QQ,求交往撒……
      

  4.   

    View vi=rightList.getChildAt(pos); listView是一个ViewGroup所以应该得到的是你点击的那一列的view,是获取不到这个vi吗?
      

  5.   


    /* 为m_ListView视图添加setOnItemClickListener监听 */
      rightList.setOnItemClickListener(new AdapterView.OnItemClickListener() {  @Override
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
    {
       for(int i=0;i<arg0.getCount();i++){
         View v=arg0.getChildAt(i);
          if (arg2 == i) {
           v.setBackgroundColor(Color.RED);
            }
               else {
              v.setBackgroundColor(Color.TRANSPARENT);}
        }
    }
    这样做,当点击ListView时是可以成功设置选中项其背景为红色,但是失去焦点时如果按照上面给出的代码
    View vi=rightList.getChildAt(pos); 则程序崩溃了....
      

  6.   

    能不能生命一个全局的View,每次把当前选中的View赋值给他。
    当焦点发生改变以后,在去拿这个全局View,对他进行一些操作啊。
    具体没做过这样的功能,只是个人的想法。希望对你有用。
      

  7.   

    这个要结合自己写的适配器,我不太清楚你适配器是怎么写的,具体的很简单,你首先定义一个全局的 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!
      

  8.   

    版主的问题可结局了?[email protected],期待中……