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 に答える