Android, data binding całego elementu

Android, data binding całego elementu
GregoryI
  • Rejestracja:ponad 9 lat
  • Ostatnio:5 dni
  • Postów:238
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:

Kopiuj
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:

Kopiuj
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:

Kopiuj
<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.

Haskell
  • Rejestracja:prawie 10 lat
  • Ostatnio:12 miesięcy
  • Postów:4700
1

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


Zaglądali do kufrów, zaglądali do waliz, nie zajrzeli do d**y - tam miałem socjalizm. Czesław Miłosz
GregoryI
  • Rejestracja:ponad 9 lat
  • Ostatnio:5 dni
  • Postów:238
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.

edytowany 2x, ostatnio: GregoryI

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.