2017-09-20 1 views
1

Ich bin ein Anfänger Programmierer.android Datenbindung funktioniert nicht

i Praxis android Datenbindung Beispiel tue ..

es funktioniert, wie

Benutzerklasse ‚mag Wert‘ erhöhen, wenn Image klicken.

aber es funktioniert nicht, ich weiß nicht,

  1. Grund ist, warum?

  2. wie kann ich es beheben?

wenn Bewegung onClickLike() -Methode von Haupt zu Benutzerklasse und Quelle beheben, ist es gut funktioniert.


Benutzerklasse

public class User { 
// 
public ObservableField<String> name = new ObservableField<>(); 
public ObservableInt age = new ObservableInt(); 
public ObservableInt likes = new ObservableInt(); 

public User(String nameString, int ageInt) { 
    name.set(nameString); 
    age.set(ageInt); 
    likes.set(0); 
} 

}


MainActivity

public class MainActivity extends AppCompatActivity { 
User user; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //setContentView(R.layout.activity_main); 
    ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main); 
    user = new User("john", 29); 
    binding.setUser(user); 

    String date = (String) DateFormat.format("yyyy/MM/dd kk:mm:ss", Calendar.getInstance()); 
    binding.textTime.setText(date); 

} 

public void onClickLike(View view) { <------------ doesn't work 
    user.likes.set(user.likes.get() + 1); 
} 

}


activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
 
<layout xmlns:android="http://schemas.android.com/apk/res/android" 
 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
 
    xmlns:tools="http://schemas.android.com/tools" 
 
    tools:context="com.example.john.bindingexample.MainActivity"> 
 
    <data> 
 
     <variable 
 
      name="user" 
 
      type="com.example.john.bindingexample.User"/> 
 
     <variable 
 
      name="main" 
 
      type="com.example.john.bindingexample.MainActivity"/> 
 
    </data> 
 

 
    <LinearLayout 
 
     android:layout_width="match_parent" 
 
     android:layout_height="match_parent" 
 
     android:orientation="vertical" 
 
     > 
 

 
     <TextView 
 
      android:id="@+id/text_time" 
 
      android:layout_width="wrap_content" 
 
      android:layout_height="wrap_content" 
 
      android:layout_gravity="right"/> 
 

 
     <TextView 
 
      android:layout_width="wrap_content" 
 
      android:layout_height="wrap_content" 
 
      android:layout_margin="8dp" 
 
      android:text="profile" 
 
      android:textAppearance="@style/TextAppearance.AppCompat.Large"/> 
 

 
     <TextView 
 
      android:layout_width="wrap_content" 
 
      android:layout_height="wrap_content" 
 
      android:layout_margin="8dp" 
 
      android:text="name:" 
 
      android:textAppearance="@style/TextAppearance.AppCompat.Medium"/> 
 

 
     <TextView 
 
      android:layout_width="wrap_content" 
 
      android:layout_height="wrap_content" 
 
      android:layout_margin="8dp" 
 
      android:text="@{user.name}" 
 
      android:textAppearance="@style/TextAppearance.AppCompat.Medium"/> 
 

 
     <TextView 
 
      android:layout_width="wrap_content" 
 
      android:layout_height="wrap_content" 
 
      android:layout_margin="8dp" 
 
      android:text="age:" 
 
      android:textAppearance="@style/TextAppearance.AppCompat.Medium"/> 
 

 
     <TextView 
 
      android:layout_width="wrap_content" 
 
      android:layout_height="wrap_content" 
 
      android:layout_margin="8dp" 
 
      android:text="@{String.valueOf(user.age)}" 
 
      android:textAppearance="@style/TextAppearance.AppCompat.Medium"/> 
 

 
     <TextView 
 
      android:layout_width="wrap_content" 
 
      android:layout_height="wrap_content" 
 
      android:layout_margin="8dp" 
 
      android:text="LIKE:" 
 
      android:textAppearance="@style/TextAppearance.AppCompat.Medium"/> 
 

 
     <TextView 
 
      android:layout_width="wrap_content" 
 
      android:layout_height="wrap_content" 
 
      android:layout_margin="8dp" 
 
      android:text="@{String.valueOf(user.likes)}" 
 
      android:textAppearance="@style/TextAppearance.AppCompat.Medium"/> 
 

 

 
     <ImageButton 
 
      android:layout_width="wrap_content" 
 
      android:layout_height="wrap_content" 
 
      android:onClick="@{main::onClickLike}" <------------ doesn't work 
 
      android:src="@drawable/ic_thumb_up_black_36dp" 
 
      /> 
 

 
    </LinearLayout> 
 

 
</layout>

Antwort

0

Ich glaube, Sie müssen auch Ihre wichtigsten in der Bindung als gleiche wie Benutzer binden in onCreate.

binding.setMain(this); 
+0

omg, ..... danke sir ... sehr viel !! – Jays

Verwandte Themen