В моем представлении у меня есть таблица с двумя текстовыми представлениями и кнопка, определенная в моем /layouts/main.xml. Остальная часть таблицы создается динамически с помощью запроса базы данных.
Все работает нормально, за исключением того, что: я хотел бы изменить цвет текста двух видов текста в зависимости от того, как установлены параметры. -> это работает, но только до тех пор, пока я не заполняю таблицу запросом db.
Для заполнения таблицы я использую это:
public void DisplayTableRow(Cursor c)
{
setContentView(R.layout.main);
TableLayout table = (TableLayout)findViewById(R.id.TableLayoutMain2);
do {
TableRow tr = new TableRow(this);
tr.setId(i);
TextView txt = new TextView(this);
txt.setText(c.getString(c
.getColumnIndex(myDatabaseAdapter.KEY_NAME)));
txt.setId(j);
txt.setTextSize(20);
tr.addView(txt);
table.addView(tr);
} while (c.moveToNext());
}
И мой main.xml выглядит следующим образом: вы заметите, что я создал две таблицы TableLayouts, чтобы предотвратить ошибку, с которой я борюсь. Но это не помогло и не навредило.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableLayout android:id="@+id/TableLayoutMain"
android:layout_width="match_parent" android:layout_height="wrap_content">
<TableRow android:id="@+id/tr1">
<TextView android:layout_width="wrap_content" android:id="@+id/Umtsstatus1"
android:text="3G status" ></TextView>
<TextView android:layout_width="wrap_content" android:id="@+id/wifistatus1"
android:text="Wifi Status"></TextView>
</TableRow>
<TableRow android:id="@+id/tr3">
<Button android:text="@string/add_alarm" android:id="@+id/add_alarm"
android:layout_height="wrap_content" android:layout_width="match_parent" android:layout_weight="1"></Button>
</TableRow>
</TableLayout>
<TableLayout android:id="@+id/TableLayoutMain2"
android:layout_width="match_parent" android:layout_height="wrap_content">
</TableLayout>
</LinearLayout>
Чтобы изменить textView, я делаю: (и это то, что не работает после вызова DisplayTableRow ())
public void showNetworkStatus(){
final SharedPreferences setting = OptionsActivity.getSettings(this);
final Boolean UmtsStatus = setting.getBoolean("radioButton3g", false);
final Boolean WifiStatus = setting.getBoolean("radioButtonWifi", false);
setContentView(R.layout.main);
Toast.makeText(this,"3G Status: "+UmtsStatus,
Toast.LENGTH_LONG).show(); //just to make sure...
TextView t=(TextView)findViewById(R.id.Umtsstatus1);
if (UmtsStatus.booleanValue())
t.setTextColor(Color.RED);
else
t.setTextColor(Color.GREEN);
TextView t2=(TextView)findViewById(R.id.wifistatus1);
if (WifiStatus.booleanValue())
t2.setTextColor(Color.RED);
else
t2.setTextColor(Color.GREEN);
}