2016-07-25 29 views
0

Hallo ich bin versucht, Imageview mit Databinding zu aktualisieren, aber ich Cent bekommen, wie es richtig geht.Databinding android update imageview

mein var

@BindingAdapter({"bind:someImage"}) 
     public void loadIt(ImageView view, String imageUrl) { 
      Picasso.with(view.getContext()) 
        .load(getSomeImage()) 
        .placeholder(android.R.drawable.alert_dark_frame) 
        .into(view); 
} 

public void setSomeImage(){ 
     notifyPropertyChanged(BR.someImage); 
    } 

mein Layout

<ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/imagePath" 
     app:imageUrl="@{var.someImage}"/> 

Ich suche haben aber keine Lösung finden .... links = link1, Link2, Link 3

Antwort

3

Sie verwenden Falsche Eigenschaft, um die Binding-Methode aufzurufen, wie Sie @BindingAdapter({"bind:someImage"}) definiert haben, müssen Sieverwenden 10, während es von xml Aufruf

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/imagePath" 
    app:someImage="@{var.someImage}"/> 
0

Sie können dies tun, ohne etwas programmatisch zu tun, wenn Ihr Datenmodell die Ressourcen-ID des Bildes enthält.

Beispiel:

<layout> 

<data> 
<import type="android.support.v4.content.ContextCompat" />    
<variable 
name="roomInfoItem" 
type="com.example......model.RoomInfoModel" /> </data> 

<RelativeLayout> 

<ImageView 
    android:id="@+id/iv_room_info_item" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
/> 

</RelativeLayout> 

</layout> 

Fügen Sie einfach die folgende Zeile in den Imageview (ich war nicht in der Lage, den Code zu formatieren, wenn ich es dort wurde hinzugefügt):

android: src = "@ {ContextCompat.getDrawable (context, roomInfoItem.resId)}“

wo Resid enthält R.drawable.your_image_name