Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 动态更改背景颜色列表视图_Android_Android Listview - Fatal编程技术网

Android 动态更改背景颜色列表视图

Android 动态更改背景颜色列表视图,android,android-listview,Android,Android Listview,我需要根据字符串值(JSON)动态更改列表视图的背景颜色。如果TAG_SEVERITY字段中的文本为“critical”,我想更改背景色。下面是我如何尝试的,但是通过代码,不管文本如何,它都会将严重性字段更改为蓝色。如果更改行颜色而不是字段背景颜色,则效果会更好。我对这个很陌生 SimpleAdapter adapter = new SimpleAdapter(this, mCommentList, R.layout.single_post, new String

我需要根据字符串值(JSON)动态更改列表视图的背景颜色。如果TAG_SEVERITY字段中的文本为“critical”,我想更改背景色。下面是我如何尝试的,但是通过代码,不管文本如何,它都会将严重性字段更改为蓝色。如果更改行颜色而不是字段背景颜色,则效果会更好。我对这个很陌生

    SimpleAdapter adapter = new SimpleAdapter(this, mCommentList,
            R.layout.single_post, new String[] {TAG_SEVERITY, TAG_TITLE }, new int[] { R.id.severity, R.id.rTitle});adapter.setViewBinder(new SimpleAdapter.ViewBinder() {

        @Override
        public boolean setViewValue(View view, Object data,
                String textRepresentation) {
            int v=view.getId();
            if(v==R.id.severity && String.valueOf(data.toString()).contentEquals("Critical")){
                ((View) view.getParent()).setBackgroundColor(Color.BLUE);
            }
            TextView TV=(TextView) view;
            TV.setText(data.toString());
            return true;
        }
    });

    setListAdapter(adapter);

我认为,通过为view.getParent()设置背景,就是为整个ListView设置背景。您尝试过使用just view.setBackground()吗


另一种方法是创建自己的适配器类,并根据严重性在getView()方法中设置视图的背景色。

将尝试这样做,但String.valueOf(data.toString()).contentEquals(“Critical”)不起作用。知道吗?当你说它不工作时,在这种情况下它是返回语法错误、运行时错误还是逻辑错误?不,它会运行,但“严重性”字段是蓝色的,与文本无关。因此,在我看来,ListView似乎有一个文本和一个子文本,其中文本是严重性级别,子文本是关于该项的更多信息?另外,这段代码是从哪里来的?onCreate()?它位于Resume()上,JSON文本接收到标记_SEVERITY,并显示在R.id.SEVERITY处。您是否尝试设置断点以查看它为什么在您认为不应该的情况下输入if语句?字符串的值出于某种原因总是关键的吗?我已经检查了Json字符串,它并不总是“关键的”,但是在执行if语句时使用断点会怎么样?