Как я могу динамически изменить цвет границы карты?

Я хотел бы изменить цвет границы моего просмотра карты в зависимости от содержимого. Можно ли каким-то образом получить доступ к XML-файлу из адаптера recyclerview и изменить цвет?

2 ответа

Решение

XML-файл из адаптераайзера и изменить цвет?

Нет. XML только для чтения. И вам не нужно прикасаться к нему, но используйте, если findViewById(), найдите вид вашей карты и используйте ее методы, чтобы изменить цвет.

Это возможно с помощью Databinding библиотека.
Допустим, что ваш контент User и вам нужно изменить цвет вашего CardView если он / она взрослый или ребенок. Таким образом, вы можете передать объект в своей деятельности или фрагменте следующим образом:

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   MainActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.main_activity);
   User user = new User("Test", "User");
   binding.setUser(user);
}

А затем добавьте data тег и переменная в вашем XML файл:

<layout xmlns:android="http://schemas.android.com/apk/res/android">
   <data>
       <variable name="user" type="com.example.User"/>
   </data>

   <android.support.v7.widget.CardView
     android:background="@{user.isAdult ? @color/yellow : @color/gray }"
       android:layout_width="match_parent"
       android:layout_height="match_parent">
       <TextView android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="@{user.firstName}"/>
   </android.support.v7.widget.CardView>
</layout>

Если вы хотите узнать больше, проверьте документацию: https://developer.android.com/topic/libraries/data-binding/index.html?hl=pt-br

Другие вопросы по тегам