如何改变ListView里面某一列的颜色?

时间:2022-05-29 19:31:06
各位大神好!
我使用的adapter是SimpleAdapter,以下是我的代码。我想把第三列改为红色,但是改为的效果如图二,每次都只有一行会变为红色,而且一滑动,红的那一行还会变换。
    // 用于通知主线程执行更新view的操作的类
    // 必须使用若引用才可以正常执行
    private class MyHandler extends Handler{
        @Override
        public void handleMessage(Message msg) {
            // 若登录成功则跳入主界面
            if (msg.what == COMPLETED_Affair) {
                TextView test   = (TextView) findViewById(R.id.Time);
                // 字的颜色改为红色
                test.setTextColor(Color.RED);
                ListView listview = (ListView) findViewById(R.id.listview_affair);
                SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(), data_affair, R.layout.list_view, new String[]{"ID", "Brief", "time_state"}, new int[]{R.id.ID, R.id.Brief, R.id.Time});
                //SpecialAdapter  adapter = new SpecialAdapter (getApplicationContext(), data_affair, R.layout.list_view, new String[]{"ID", "Brief", "time_state"}, new int[]{R.id.ID, R.id.Brief, R.id.Time});
                listview.setAdapter(adapter);
            } else if (msg.what == COMPLETED_Task) {
                ListView listview = (ListView) findViewById(R.id.listview_task);
                SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(), data_task, R.layout.list_view, new String[]{"ID", "task_name", "time_state"}, new int[]{R.id.ID, R.id.Brief, R.id.Time});
                listview.setAdapter(adapter);
            }
        }
    }


图二:
如何改变ListView里面某一列的颜色?

请问这是什么原因呢?

5 个解决方案

#1


在getView里面修改指定你要修改那个View的颜色即可。

#2


一直是红色的,直接改XML文件好了

#3


引用 楼主 haolvshiqi 的回复:
各位大神好!
我使用的adapter是SimpleAdapter,以下是我的代码。我想把第三列改为红色,但是改为的效果如图二,每次都只有一行会变为红色,而且一滑动,红的那一行还会变换。
    // 用于通知主线程执行更新view的操作的类
    // 必须使用若引用才可以正常执行
    private class MyHandler extends Handler{
        @Override
        public void handleMessage(Message msg) {
            // 若登录成功则跳入主界面
            if (msg.what == COMPLETED_Affair) {
                TextView test   = (TextView) findViewById(R.id.Time);
                // 字的颜色改为红色
                test.setTextColor(Color.RED);
                ListView listview = (ListView) findViewById(R.id.listview_affair);
                SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(), data_affair, R.layout.list_view, new String[]{"ID", "Brief", "time_state"}, new int[]{R.id.ID, R.id.Brief, R.id.Time});
                //SpecialAdapter  adapter = new SpecialAdapter (getApplicationContext(), data_affair, R.layout.list_view, new String[]{"ID", "Brief", "time_state"}, new int[]{R.id.ID, R.id.Brief, R.id.Time});
                listview.setAdapter(adapter);
            } else if (msg.what == COMPLETED_Task) {
                ListView listview = (ListView) findViewById(R.id.listview_task);
                SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(), data_task, R.layout.list_view, new String[]{"ID", "task_name", "time_state"}, new int[]{R.id.ID, R.id.Brief, R.id.Time});
                listview.setAdapter(adapter);
            }
        }
    }


图二:
如何改变ListView里面某一列的颜色?

请问这是什么原因呢?

但是为何我能改一行的颜色。

#4


跟我发的那个问题 有点像  楼主可以去我那个帖子看一下
地址 http://bbs.csdn.net/topics/391037105
 问题提的不是你这个 你在评论里看一下 

#5


使用自定义适配器BaseAdapter 在getview方法里面操作 

#1


在getView里面修改指定你要修改那个View的颜色即可。

#2


一直是红色的,直接改XML文件好了

#3


引用 楼主 haolvshiqi 的回复:
各位大神好!
我使用的adapter是SimpleAdapter,以下是我的代码。我想把第三列改为红色,但是改为的效果如图二,每次都只有一行会变为红色,而且一滑动,红的那一行还会变换。
    // 用于通知主线程执行更新view的操作的类
    // 必须使用若引用才可以正常执行
    private class MyHandler extends Handler{
        @Override
        public void handleMessage(Message msg) {
            // 若登录成功则跳入主界面
            if (msg.what == COMPLETED_Affair) {
                TextView test   = (TextView) findViewById(R.id.Time);
                // 字的颜色改为红色
                test.setTextColor(Color.RED);
                ListView listview = (ListView) findViewById(R.id.listview_affair);
                SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(), data_affair, R.layout.list_view, new String[]{"ID", "Brief", "time_state"}, new int[]{R.id.ID, R.id.Brief, R.id.Time});
                //SpecialAdapter  adapter = new SpecialAdapter (getApplicationContext(), data_affair, R.layout.list_view, new String[]{"ID", "Brief", "time_state"}, new int[]{R.id.ID, R.id.Brief, R.id.Time});
                listview.setAdapter(adapter);
            } else if (msg.what == COMPLETED_Task) {
                ListView listview = (ListView) findViewById(R.id.listview_task);
                SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(), data_task, R.layout.list_view, new String[]{"ID", "task_name", "time_state"}, new int[]{R.id.ID, R.id.Brief, R.id.Time});
                listview.setAdapter(adapter);
            }
        }
    }


图二:
如何改变ListView里面某一列的颜色?

请问这是什么原因呢?

但是为何我能改一行的颜色。

#4


跟我发的那个问题 有点像  楼主可以去我那个帖子看一下
地址 http://bbs.csdn.net/topics/391037105
 问题提的不是你这个 你在评论里看一下 

#5


使用自定义适配器BaseAdapter 在getview方法里面操作