更改ListView布局背景颜色取决于特殊条件

时间:2016-12-17 11:39:13

标签: android android-layout listview android-studio

我在ListView中创建Fragment并使用SimpleAdapter设置布局和值。

现在,我想更改我在LinearLayout中使用的布局ListView的背景,具体取决于为ListView设置的文字。
像这样:

Something Like This

这是我的布局XML 我希望使用list id更改LinearLayout的颜色。

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:background="@drawable/layout_shadow"
    android:layout_height="207dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:orientation="vertical"
        android:background="@color/colorPrimary"
        android:layout_height="193dp"
        android:layout_marginLeft="6dp"
        android:layout_marginRight="6dp"
        android:id="@+id/list">

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

            <TextView
                android:text="magnitude"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/fValue"
                android:textStyle="bold"
                android:textColor="@android:color/white"
                android:textSize="20sp"
                android:layout_margin="5dp" />
        </LinearLayout>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

            <TextView
                android:text="region"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/sValue"
                android:textColor="@android:color/white" />
        </LinearLayout>

        <ImageView
            android:layout_width="match_parent"
            app:srcCompat="@drawable/no_image"
            android:id="@+id/mImage"
            android:layout_height="143dp" />
    </LinearLayout>
</RelativeLayout>

4 个答案:

答案 0 :(得分:3)

  1. 您需要通过扩展SimpleAdapter类来自定义SimpleAdapter,并覆盖所有必需的方法。

  2. 在getView()方法下,您需要编写以下代码

  3. 确保为所有人设置ID,以便您可以轻松访问java代码。

  4. 现在从textview的文本中获取文本(颜色)(Like&#34; Green&#34;)并在LinearLayout的背景颜色上设置(如LinearLayout_Object.setBackgroundColor(Color.parseColor(&#) 34;绿色&#34));)

  5. 注意:但要从数组/列表中获取对象/值,您需要使用&#34; Position&#34;还

答案 1 :(得分:2)

您必须检查适配器中的条件以获取文本,然后设置线性布局的背景颜色。

例如:

if(textView.getText().toString().equals("red"))
{
      linearLayout.setBackgroundColor(your color)
}

答案 2 :(得分:1)

在我的adapter我这样做:

row = (LinearLayout) findViewById(R.id.llListViewRow);

row.setBackgroundColor(rowBgColor(position));

编辑: 如果你想根据TextView改变颜色:

row = (LinearLayout) findViewById(R.id.llListViewRow);
tv = (TextView) findViewById(R.id.tvTextView);

row.setBackgroundColor(rowBgColor(tv.getText()));

其中rowBgColor()应该是您的方法,根据TextView

中的文本返回所需的颜色

答案 3 :(得分:1)

你可以尝试这样希望这可以帮助你..

  if (yourmodel.get(postion).getTextName().equalsIgnoreCase("RED")) {
        lLayout.setBackgroundColor(Color.parseColor("#FF0000"));
    } else if (yourmodel.get(postion).getTextName().equalsIgnoreCase("GREEN")) {
        lLayout.setBackgroundColor(Color.parseColor("#008000"));
    } else if (yourmodel.get(postion).getTextName().equalsIgnoreCase("YELLOW")) {
        lLayout.setBackgroundColor(Color.parseColor("#FFFF00"));
    } else {
        lLayout.setBackgroundColor(Color.parseColor("#2F00FF"));
    }