diff --git a/.gitignore b/.gitignore index ab1c64e..d1d697e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,35 +1,6 @@ -# Built application files -*.apk -*.ap_ - -# Files for the Dalvik VM -*.dex - -# Java class files -*.class - -# Generated files -bin/ -gen/ - -# Gradle files -.gradle/ -build/ -/*/build/ - -# Local configuration file (sdk path, etc) -local.properties - -# Proguard folder generated by Eclipse -proguard/ - -# Log Files -*.log .gradle -/local.properties -/.idea/workspace.xml -/.idea/libraries -.DS_Store -/build -/captures -/infer-out +.idea +build +*/build +*.iml +local.properties \ No newline at end of file diff --git a/.idea/.name b/.idea/.name deleted file mode 100644 index 2fd06de..0000000 --- a/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -DataBindingSamples \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index 7c4fca0..0000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml deleted file mode 100644 index e7bedf3..0000000 --- a/.idea/copyright/profiles_settings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml deleted file mode 100644 index 0833b17..0000000 --- a/.idea/gradle.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index ae715a8..0000000 --- a/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml deleted file mode 100644 index 3b31283..0000000 --- a/.idea/inspectionProfiles/profiles_settings.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 64948a6..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - Android Lint - - - Control flow issuesJava - - - Java - - - Probable bugsJava - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index defe20b..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml deleted file mode 100644 index 7f68460..0000000 --- a/.idea/runConfigurations.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/AndroidDataBinding.iml b/AndroidDataBinding.iml deleted file mode 100644 index 3216c27..0000000 --- a/AndroidDataBinding.iml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore deleted file mode 100644 index 796b96d..0000000 --- a/app/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/app/app.iml b/app/app.iml deleted file mode 100644 index ac8f47e..0000000 --- a/app/app.iml +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3b1c38d..5275417 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -63,6 +63,8 @@ android:name="com.liangfeizc.databinding.sample.converter.ConversionsActivity" android:label="@string/title_activity_conversions" > + + diff --git a/app/src/main/java/com/liangfeizc/databinding/model/User.java b/app/src/main/java/com/liangfeizc/databinding/model/User.java index 4627495..c84cbfe 100644 --- a/app/src/main/java/com/liangfeizc/databinding/model/User.java +++ b/app/src/main/java/com/liangfeizc/databinding/model/User.java @@ -4,8 +4,8 @@ * Created by liangfeizc on 6/2/15. */ public class User { - private final String firstName; - private final String lastName; + private String firstName; + private String lastName; private String displayName; private int age; @@ -27,6 +27,10 @@ public String getFirstName() { return firstName; } + public void setFirstName(String v) { + firstName = v; + } + public String getLastName() { return lastName; } diff --git a/app/src/main/java/com/liangfeizc/databinding/sample/MainActivity.java b/app/src/main/java/com/liangfeizc/databinding/sample/MainActivity.java index 074b971..8381a07 100644 --- a/app/src/main/java/com/liangfeizc/databinding/sample/MainActivity.java +++ b/app/src/main/java/com/liangfeizc/databinding/sample/MainActivity.java @@ -69,4 +69,8 @@ public void openAttributeSetters(View view) { public void openConverters(View view) { startActivity(new Intent(this, ConversionsActivity.class)); } + + public void openViewDataBinding(View view) { + startActivity(new Intent(this, ViewDataBindingActivity.class)); + } } diff --git a/app/src/main/java/com/liangfeizc/databinding/sample/ViewDataBindingActivity.java b/app/src/main/java/com/liangfeizc/databinding/sample/ViewDataBindingActivity.java new file mode 100644 index 0000000..9ea5387 --- /dev/null +++ b/app/src/main/java/com/liangfeizc/databinding/sample/ViewDataBindingActivity.java @@ -0,0 +1,50 @@ +package com.liangfeizc.databinding.sample; + +import android.databinding.DataBindingUtil; +import android.os.Bundle; +import android.text.Editable; +import android.text.TextWatcher; +import android.util.Log; + +import com.liangfeizc.databinding.R; +import com.liangfeizc.databinding.databinding.ActivityViewdataBindingBinding; +import com.liangfeizc.databinding.model.User; + +/** + * Created by Administrator on 2015/12/9. + */ +public class ViewDataBindingActivity extends BaseActivity{ + + public static final String TAG = ViewDataBindingActivity.class.getSimpleName(); + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + final ActivityViewdataBindingBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_viewdata_binding); + final User user = new User("google", "github"); + binding.setUser(user); + + binding.editText.setText(user.getFirstName()); + binding.editText.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + + } + + @Override + public void afterTextChanged(Editable s) { + user.setFirstName(s.toString().trim()); + + Log.i(TAG, "has pending bindings:" + binding.hasPendingBindings()); + + // Refresh ui + binding.invalidateAll(); + } + }); + } +} diff --git a/app/src/main/java/com/liangfeizc/databinding/sample/converter/ConversionsActivity.java b/app/src/main/java/com/liangfeizc/databinding/sample/converter/ConversionsActivity.java index ea5b871..0586791 100644 --- a/app/src/main/java/com/liangfeizc/databinding/sample/converter/ConversionsActivity.java +++ b/app/src/main/java/com/liangfeizc/databinding/sample/converter/ConversionsActivity.java @@ -10,30 +10,37 @@ import android.view.ViewGroup; import com.liangfeizc.databinding.R; -import com.liangfeizc.databinding.sample.BaseActivity; import com.liangfeizc.databinding.databinding.ActivityConversionsBinding; +import com.liangfeizc.databinding.sample.BaseActivity; import com.liangfeizc.databinding.utils.ScreenUtils; public class ConversionsActivity extends BaseActivity { - private ObservableBoolean mIsError = new ObservableBoolean(); + private boolean mIsError; + private ObservableBoolean mIsErrorObservable = new ObservableBoolean(); + private ActivityConversionsBinding mBinding; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - ActivityConversionsBinding binding = - DataBindingUtil.setContentView(this, R.layout.activity_conversions); - - mIsError.set(true); + mBinding = DataBindingUtil.setContentView(this, R.layout.activity_conversions); - binding.setIsError(mIsError); - binding.setHeight(ScreenUtils.dp2px(this, 200)); + mIsError = true; + mBinding.setIsError(mIsError); + mBinding.setHeight(ScreenUtils.dp2px(this, 100)); + mIsErrorObservable.set(true); + mBinding.setIsErrorObservable(mIsErrorObservable); } public void toggleIsError(View view) { - mIsError.set(!mIsError.get()); + mIsError = !mIsError; + mBinding.setIsError(mIsError); + } + + public void toggleIsErrorObservable(View view) { + mIsErrorObservable.set(!mIsErrorObservable.get()); } @BindingConversion diff --git a/app/src/main/java/com/liangfeizc/databinding/sample/dynamic/UserAdapter.java b/app/src/main/java/com/liangfeizc/databinding/sample/dynamic/UserAdapter.java index 76a6d02..63a760a 100644 --- a/app/src/main/java/com/liangfeizc/databinding/sample/dynamic/UserAdapter.java +++ b/app/src/main/java/com/liangfeizc/databinding/sample/dynamic/UserAdapter.java @@ -19,13 +19,13 @@ * Created by rufi on 6/5/15. */ public class UserAdapter extends RecyclerView.Adapter { - private static final int USER_COUNT = 10; + private static final int USER_COUNT = 100; @NonNull private List mUsers; public UserAdapter() { - mUsers = new ArrayList<>(10); + mUsers = new ArrayList<>(USER_COUNT); for (int i = 0; i < USER_COUNT; i ++) { User user = new User(Randoms.nextFirstName(), Randoms.nextLastName()); mUsers.add(user); diff --git a/app/src/main/java/com/liangfeizc/databinding/sample/viewstub/ViewStubActivity.java b/app/src/main/java/com/liangfeizc/databinding/sample/viewstub/ViewStubActivity.java index be1e806..96a4a1e 100644 --- a/app/src/main/java/com/liangfeizc/databinding/sample/viewstub/ViewStubActivity.java +++ b/app/src/main/java/com/liangfeizc/databinding/sample/viewstub/ViewStubActivity.java @@ -1,6 +1,7 @@ package com.liangfeizc.databinding.sample.viewstub; import android.databinding.DataBindingUtil; +import android.databinding.ViewStubProxy; import android.os.Bundle; import android.view.View; import android.view.ViewStub; @@ -35,8 +36,9 @@ public void onInflate(ViewStub stub, View inflated) { * Don't panic for red error reporting. Just ignore it and run the app. Surprise never ends. */ public void inflateViewStub(View view) { - if (!mBinding.viewStub.isInflated()) { - mBinding.viewStub.getViewStub().inflate(); + ViewStubProxy viewStubProxy = (ViewStubProxy)(Object)mBinding.viewStub; + if (!viewStubProxy.isInflated()) { + viewStubProxy.getViewStub().inflate(); } } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_conversions.xml b/app/src/main/res/layout/activity_conversions.xml index 61d8684..6131236 100644 --- a/app/src/main/res/layout/activity_conversions.xml +++ b/app/src/main/res/layout/activity_conversions.xml @@ -2,29 +2,61 @@ xmlns:app="http://schemas.android.com/apk/res-auto"> - + + + - - - + + android:layout_height="0dp" + android:layout_weight="1" + android:paddingBottom="@dimen/activity_vertical_margin" + android:paddingLeft="@dimen/activity_horizontal_margin" + android:paddingRight="@dimen/activity_horizontal_margin" + android:paddingTop="@dimen/activity_vertical_margin"> + + -