我在ListView
中创建Fragment
并使用SimpleAdapter
设置布局和值。
现在,我想更改我在LinearLayout
中使用的布局ListView
的背景,具体取决于为ListView
设置的文字。
像这样:
这是我的布局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>
答案 0 :(得分:3)
您需要通过扩展SimpleAdapter类来自定义SimpleAdapter,并覆盖所有必需的方法。
在getView()方法下,您需要编写以下代码
确保为所有人设置ID,以便您可以轻松访问java代码。
现在从textview的文本中获取文本(颜色)(Like&#34; Green&#34;)并在LinearLayout的背景颜色上设置(如LinearLayout_Object.setBackgroundColor(Color.parseColor(&#) 34;绿色&#34));)
注意:但要从数组/列表中获取对象/值,您需要使用&#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"));
}