0

我想更改TextView列表单行的背景颜色。我不知道如何才能到达特定行。

我的 XML:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LL_NoteRows"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:id="@+id/LL_NoteRow"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/text1"
            android:layout_width="match_parent"
            android:layout_height="35dp"
            android:text="Tytuł"
            android:textSize="25dp" />

        <TextView
            android:id="@+id/text3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:maxLines="3"
            android:text="Treść"
            android:textColor="#505050"
            android:textSize="15dp" />

        <TextView
            android:id="@+id/NoteRowColor"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="TextView" />

    </LinearLayout>

</LinearLayout>

以及填充数据的功能:

public void fillData()
    {
        Cursor notesCursor = mDbHelper.fetchAllNotes();
        startManagingCursor(notesCursor);

        // Create an array to specify the fields we want to display in the list (only TITLE)
        String[] from = new String[]{NotesDbAdapter.KEY_TITLE, NotesDbAdapter.KEY_BODY, NotesDbAdapter.KEY_COLOR};

        // and an array of the fields we want to bind those fields to (in this case just text1)
        int[] to = new int[]{R.id.text1, R.id.text3, R.id.NoteRowColor};

        // Now create a simple cursor adapter and set it to display
        SimpleCursorAdapter notes = new SimpleCursorAdapter(this, R.layout.notes_row, notesCursor, from, to);
        setListAdapter(notes);
    }

它工作正常,但是当我尝试这样做时:

LinearLayout rl=(LinearLayout)findViewById(R.id.LL_NoteRow);

mColorText = (TextView) findViewById(R.id.NoteRowColor);
String newColor = mColorText.getText().toString();

if(colorToSet.equals("blady_morski"))
    rl.setBackgroundColor(getResources().getColor(R.color.blady_morski));

应用程序崩溃。

4

1 回答 1

0

您需要继承SimpleCursorAdapter和覆盖getView(). 列表中的每一行都会调用该方法,您可以在那里进行自定义。

于 2013-05-15T08:33:28.037 回答