Android, data binding całego elementu

0

Data binding jest używany do łączenia zmiennych/eventów wchodzących w skład danego elementu UI.
W zasadzie to wystarcza i nie trzeba kombinować więcej, ale naszło mnie pytanie, czy da się "połączyć" jakiś cały view z UI ze zmienną (zmienna typu tego view np. TextView w xml zostaje połączony z TextView (zmienną) w modelu, zamiast łączenia parametru "text" w xml TextView do jakiegoś Stringa w modelu)).
Powyższy przykład:

public class ViewModel {
    private TextView textView;
    private String textContent;
...jakaś inicjacja...
    public TextView getTextView() {
        return textView;
    }
    public String getTextContent() {
        return textContent;
    }
}

Powinno się zrobić tak:

w xml.
<data>
<variable
name="viewModel"
type="...app.viewmodel.ViewModel"/>
</data>

<TextView
...parametry...
android:text="@{viewModel.textContent}"/>

Moje pytanie brzmi, czy da się przypisać coś takiego:

<data>
<variable
name="viewModel"
type="...app.viewmodel.ViewModel"/>
</data>

<TextView = (jakieś wyrażenie tutaj albo w parametrach) "@{viewModel.textView}"
...parametry.../>

Jeśli ktoś chciałby się wypowiedzieć, to nie, nie obchodzi mnie czy to dobre rozwiązanie, sensowne, czy nie - no bo nie jest. Pytanie jest czysto teoretyczne.

1

Nie, nie da się. Poza tym to kiepski pomysł, ponieważ sprzyja mieszaniu warstwy logiki i prezentacji.

0

@Haskell czyli tak jak myślałem.

Odświeżyłem sobie ostatnio stary projekt i miałem tam rozszerzenie SurfaceView, po którym coś rysowałem, a że ostatnio bawiłem się z data bindingiem to zastanawiałem się, czy jest możliwość "sprzężenia" tego co widzimy ( canvas) z XML za pomocą data binding.
Nie ma parametru w XML, który odpowiada za "canvas" z View/SurfaceView ( są tylko drawable background/foreground, ale to niewiele daje), więc stąd było pytanie, czy może da się połączyć cały obiekt z XML ze zmienną w modelu.
No nic, chciałem się upewnić. Dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1