Как изменить цвет элемента списка ListView с помощью onActivityResult?

-4

У меня есть активность A с listView и активностью B с формой. Я касаюсь предмета из действия A и вызывается формой из действия B. Например. Я прикасаюсь к элементу "Laura" и открываю форму о ней, после заполнения формы и завершения операции BI возвращает строку "Laura", и я хочу изменить цвет ListView List из Laura. Как я могу это сделать?

спросил(а) 2021-01-19T16:19:00+03:00 2 месяца, 3 недели назад
1
Решение
62

Вы должны использовать логическое значение, чтобы проверить, не было ли у вас изменено на учетной записи Laura, поэтому он будет выглядеть примерно так:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Check which request we're responding to
if (requestCode == REQUEST_ACCOUNT_LAURA) {
// Make sure the request was successful
if (resultCode == RESULT_OK) {
// The user changed Laura account.
boolean isAccountChanged= data.getBooleanExtra("isAccountChanged", false);
if (isAccountChanged) {
ListView listView = new ListView(this);
// Get the view associated with Laura, and change the background color.
((View) listView.getItemAtPosition(position)).setBackgroundColor(R.color.black);
listView.getAdapter().notifyDataSetChanged();
}

// Do something with the contact here (bigger example below)
}
}
}

Также вы можете использовать этот onListItemCLick, который вы можете установить в ListView:

View lastTouchedView;

@Override
public void onListItemClick(ListView parent, View v, int position, long id)
lastTouchedView.setBackgroundColor(Color.WHITE);
v.setBackgroundColor(Color.CYAN);
lastTouchedView = v;
}

ответил(а) 2021-01-19T16:19:00+03:00 2 месяца, 3 недели назад
44

вернуть что-то еще, кроме "Лауры". возможно, вернуть объект в связку? OnActivityResult() не ограничивается только примитивными типами. Поэкспериментируйте с этим и посмотрите, что вы можете выполнить =)

ответил(а) 2021-01-19T16:19:00+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема