From 760ab00c2c34b6ee98b9188d9edf15025d06e0ed Mon Sep 17 00:00:00 2001 From: Daniel Novak Date: Tue, 19 Jan 2016 13:25:40 +0100 Subject: [PATCH 01/53] Update buildTools and support library --- library/build.gradle | 8 ++++---- sample/build.gradle | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/library/build.gradle b/library/build.gradle index 575d900..e438b14 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -2,12 +2,12 @@ apply plugin: 'com.android.library' apply plugin: 'maven' android { - compileSdkVersion 22 - buildToolsVersion '22.0.1' + compileSdkVersion 23 + buildToolsVersion '23.0.2' defaultConfig { minSdkVersion 15 - targetSdkVersion 22 + targetSdkVersion 23 versionCode 1 versionName VERSION_NAME } @@ -24,7 +24,7 @@ android { } dependencies { - compile 'com.android.support:appcompat-v7:22.1.1' + compile 'com.android.support:appcompat-v7:23.1.1' } task androidJavadocs(type: Javadoc) { diff --git a/sample/build.gradle b/sample/build.gradle index 0c6cb6a..bd35607 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 22 - buildToolsVersion '22.0.1' + compileSdkVersion 23 + buildToolsVersion '23.0.2' defaultConfig { applicationId 'eu.inloop.viewmodel.sample' minSdkVersion 15 - targetSdkVersion 22 + targetSdkVersion 23 versionCode 1 versionName '1.0' } @@ -26,7 +26,7 @@ android { } dependencies { - compile 'com.android.support:appcompat-v7:22.1.1' + compile 'com.android.support:appcompat-v7:23.1.1' debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3' releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3' compile 'com.jakewharton:butterknife:5.1.2' From 764ec9f8ff4a41b8ef3964ac94efb1577030118b Mon Sep 17 00:00:00 2001 From: Daniel Novak Date: Tue, 19 Jan 2016 13:43:31 +0100 Subject: [PATCH 02/53] Add viewpager sample --- sample/src/main/AndroidManifest.xml | 1 + .../sample/activity/ViewPagerActivity.java | 39 ++++++++++++++ .../sample/fragment/PagerFragment.java | 54 +++++++++++++++++++ .../sample/fragment/UserListFragment.java | 8 +++ .../viewmodel/sample/viewmodel/PageModel.java | 7 +++ .../sample/viewmodel/view/IPageView.java | 6 +++ sample/src/main/res/layout/activity_pager.xml | 11 ++++ sample/src/main/res/layout/fragment_pager.xml | 14 +++++ .../src/main/res/layout/view_header_info.xml | 6 +++ sample/src/main/res/values/strings.xml | 1 + 10 files changed, 147 insertions(+) create mode 100644 sample/src/main/java/eu/inloop/viewmodel/sample/activity/ViewPagerActivity.java create mode 100644 sample/src/main/java/eu/inloop/viewmodel/sample/fragment/PagerFragment.java create mode 100644 sample/src/main/java/eu/inloop/viewmodel/sample/viewmodel/PageModel.java create mode 100644 sample/src/main/java/eu/inloop/viewmodel/sample/viewmodel/view/IPageView.java create mode 100644 sample/src/main/res/layout/activity_pager.xml create mode 100644 sample/src/main/res/layout/fragment_pager.xml diff --git a/sample/src/main/AndroidManifest.xml b/sample/src/main/AndroidManifest.xml index 6c53763..66c08c6 100644 --- a/sample/src/main/AndroidManifest.xml +++ b/sample/src/main/AndroidManifest.xml @@ -17,6 +17,7 @@ + diff --git a/sample/src/main/java/eu/inloop/viewmodel/sample/activity/ViewPagerActivity.java b/sample/src/main/java/eu/inloop/viewmodel/sample/activity/ViewPagerActivity.java new file mode 100644 index 0000000..fb5359b --- /dev/null +++ b/sample/src/main/java/eu/inloop/viewmodel/sample/activity/ViewPagerActivity.java @@ -0,0 +1,39 @@ +package eu.inloop.viewmodel.sample.activity; + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentStatePagerAdapter; +import android.support.v4.view.ViewPager; +import android.support.v7.app.AppCompatActivity; + +import eu.inloop.viewmodel.sample.R; +import eu.inloop.viewmodel.sample.fragment.PagerFragment; + +public class ViewPagerActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_pager); + + final ViewPager viewPager = (ViewPager) findViewById(R.id.pager); + viewPager.setAdapter(new TestPagerAdapter(getSupportFragmentManager())); + } + + private final static class TestPagerAdapter extends FragmentStatePagerAdapter { + public TestPagerAdapter(FragmentManager fm) { + super(fm); + } + + @Override + public Fragment getItem(int position) { + return PagerFragment.newInstance(position); + } + + @Override + public int getCount() { + return 10; + } + } +} diff --git a/sample/src/main/java/eu/inloop/viewmodel/sample/fragment/PagerFragment.java b/sample/src/main/java/eu/inloop/viewmodel/sample/fragment/PagerFragment.java new file mode 100644 index 0000000..5168466 --- /dev/null +++ b/sample/src/main/java/eu/inloop/viewmodel/sample/fragment/PagerFragment.java @@ -0,0 +1,54 @@ +package eu.inloop.viewmodel.sample.fragment; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import com.squareup.leakcanary.RefWatcher; + +import eu.inloop.viewmodel.base.ViewModelBaseFragment; +import eu.inloop.viewmodel.sample.R; +import eu.inloop.viewmodel.sample.SampleApplication; +import eu.inloop.viewmodel.sample.viewmodel.PageModel; +import eu.inloop.viewmodel.sample.viewmodel.view.IPageView; + +public class PagerFragment extends ViewModelBaseFragment { + + public static PagerFragment newInstance(int position) { + final Bundle bundle = new Bundle(); + bundle.putInt("position", position); + final PagerFragment fragment = new PagerFragment(); + fragment.setArguments(bundle); + return fragment; + } + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_pager, container, false); + } + + @Override + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + ((TextView)view.findViewById(R.id.text)).setText(Integer.toString(getArguments().getInt("position"))); + } + + @Override + public Class getViewModelClass() { + return PageModel.class; + } + + @Override + public void onDestroy() { + super.onDestroy(); + + // watch for memory leaks + RefWatcher refWatcher = SampleApplication.getRefWatcher(getActivity()); + refWatcher.watch(this); + } +} diff --git a/sample/src/main/java/eu/inloop/viewmodel/sample/fragment/UserListFragment.java b/sample/src/main/java/eu/inloop/viewmodel/sample/fragment/UserListFragment.java index 41c777b..7c3d759 100644 --- a/sample/src/main/java/eu/inloop/viewmodel/sample/fragment/UserListFragment.java +++ b/sample/src/main/java/eu/inloop/viewmodel/sample/fragment/UserListFragment.java @@ -1,5 +1,6 @@ package eu.inloop.viewmodel.sample.fragment; +import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.LayoutInflater; @@ -20,6 +21,7 @@ import eu.inloop.viewmodel.base.ViewModelBaseFragment; import eu.inloop.viewmodel.sample.R; import eu.inloop.viewmodel.sample.SampleApplication; +import eu.inloop.viewmodel.sample.activity.ViewPagerActivity; import eu.inloop.viewmodel.sample.viewmodel.UserListViewModel; import eu.inloop.viewmodel.sample.viewmodel.view.IUserListView; @@ -65,6 +67,12 @@ public void onClick(View view) { getActivity().startActivity(getActivity().getIntent()); } }); + headerView.findViewById(R.id.button3).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + startActivity(new Intent(getContext(), ViewPagerActivity.class)); + } + }); mListview.addHeaderView(headerView, null, false); return view; } diff --git a/sample/src/main/java/eu/inloop/viewmodel/sample/viewmodel/PageModel.java b/sample/src/main/java/eu/inloop/viewmodel/sample/viewmodel/PageModel.java new file mode 100644 index 0000000..f6a515f --- /dev/null +++ b/sample/src/main/java/eu/inloop/viewmodel/sample/viewmodel/PageModel.java @@ -0,0 +1,7 @@ +package eu.inloop.viewmodel.sample.viewmodel; + +import eu.inloop.viewmodel.AbstractViewModel; +import eu.inloop.viewmodel.sample.viewmodel.view.IPageView; + +public class PageModel extends AbstractViewModel { +} diff --git a/sample/src/main/java/eu/inloop/viewmodel/sample/viewmodel/view/IPageView.java b/sample/src/main/java/eu/inloop/viewmodel/sample/viewmodel/view/IPageView.java new file mode 100644 index 0000000..fab1625 --- /dev/null +++ b/sample/src/main/java/eu/inloop/viewmodel/sample/viewmodel/view/IPageView.java @@ -0,0 +1,6 @@ +package eu.inloop.viewmodel.sample.viewmodel.view; + +import eu.inloop.viewmodel.IView; + +public class IPageView implements IView { +} diff --git a/sample/src/main/res/layout/activity_pager.xml b/sample/src/main/res/layout/activity_pager.xml new file mode 100644 index 0000000..0c61343 --- /dev/null +++ b/sample/src/main/res/layout/activity_pager.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/sample/src/main/res/layout/fragment_pager.xml b/sample/src/main/res/layout/fragment_pager.xml new file mode 100644 index 0000000..ec6ea51 --- /dev/null +++ b/sample/src/main/res/layout/fragment_pager.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/sample/src/main/res/layout/view_header_info.xml b/sample/src/main/res/layout/view_header_info.xml index e01329e..f73928c 100644 --- a/sample/src/main/res/layout/view_header_info.xml +++ b/sample/src/main/res/layout/view_header_info.xml @@ -22,4 +22,10 @@ android:text="@string/userlist_close_activity" android:layout_height="wrap_content" /> +