Редактирование Android TextView после заполнения TableView из БД кажется невозможным - PullRequest
1 голос
/ 17 декабря 2011

В моем представлении у меня есть таблица с двумя текстовыми представлениями и кнопка, определенная в моем /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);

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...