Я хочу изменить цвет фона 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));

Приложение вылетает.

0
Mariusz Jucha 15 Май 2013 в 12:18
Заменить mColorText = (TextView) findViewById (R.id.NoteRowColor); автор mColorText = (TextView) rl.findViewById (R.id.NoteRowColor);
 – 
Aditya Kushwaha
15 Май 2013 в 12:25
Привет, В чем ценность blady_morski в вашем цвете xml?
 – 
Jarvis
15 Май 2013 в 12:42

1 ответ

Лучший ответ

Вам нужно создать подкласс SimpleCursorAdapter и переопределить getView(). Этот метод вызывается для каждой строки в списке, и вы можете делать там свои настройки.

0
David Wasser 15 Май 2013 в 12:33