diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2015-09-15 18:40:47 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2015-09-15 18:40:47 +0900 |
commit | 897cdb295354cf8d8806270302cd7697cd76c54e (patch) | |
tree | c9a1a35c37a5230d2f0b118e74dbcbb378b935dd /app | |
parent | 18a0f6c1d7795c3f6fe0667ece80ebcd17b3bb95 (diff) | |
download | SmileEssence-897cdb295354cf8d8806270302cd7697cd76c54e.tar.gz |
データバインディングを使い始めた
Diffstat (limited to 'app')
7 files changed, 96 insertions, 58 deletions
diff --git a/app/app.iml b/app/app.iml index d469eb1d..04b642c5 100644 --- a/app/app.iml +++ b/app/app.iml @@ -13,8 +13,11 @@ <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" /> <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" /> <option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugAndroidTest" /> - <option name="SOURCE_GEN_TASK_NAME" value="generateDebugSources" /> - <option name="TEST_SOURCE_GEN_TASK_NAME" value="generateDebugAndroidTestSources" /> + <option name="COMPILE_JAVA_TEST_TASK_NAME" value="compileDebugAndroidTestSources" /> + <afterSyncTasks> + <task>generateDebugAndroidTestSources</task> + <task>generateDebugSources</task> + </afterSyncTasks> <option name="ALLOW_USER_CONFIGURATION" value="false" /> <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" /> <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" /> @@ -23,7 +26,7 @@ </configuration> </facet> </component> - <component name="NewModuleRootManager" inherit-compiler-output="false"> + <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8" inherit-compiler-output="false"> <output url="file://$MODULE_DIR$/build/retrolambda/debug" /> <output-test url="file://$MODULE_DIR$/build/retrolambda/debugAndroidTest" /> <content url="file://$MODULE_DIR$"> @@ -69,6 +72,12 @@ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex-cache" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.databinding/library/1.0-rc1/jars" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v13/23.0.1/jars" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/23.0.1/jars" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.mcxiaoke.volley/library/1.0.19/jars" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.navercorp.pulltorefresh/library/3.3.0-SNAPSHOT/jars" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/de.keyboardsurfer.android.widget/crouton/1.8.5/jars" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jacoco" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaResources" /> @@ -81,6 +90,7 @@ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" /> + <excludeFolder url="file://$MODULE_DIR$/build/layout-info" /> <excludeFolder url="file://$MODULE_DIR$/build/outputs" /> <excludeFolder url="file://$MODULE_DIR$/build/retrolambda" /> <excludeFolder url="file://$MODULE_DIR$/build/tmp" /> @@ -88,8 +98,8 @@ <orderEntry type="jdk" jdkName="Android API 21 Platform" jdkType="Android SDK" /> <orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="library" exported="" name="kotlin-runtime-0.12.613" level="project" /> + <orderEntry type="library" exported="" name="library-1.0.19" level="project" /> <orderEntry type="library" exported="" name="commons-io-2.4" level="project" /> - <orderEntry type="library" exported="" name="library-1.0.18" level="project" /> <orderEntry type="library" exported="" name="guava-19.0-rc1" level="project" /> <orderEntry type="library" exported="" name="library-3.3.0-SNAPSHOT" level="project" /> <orderEntry type="library" exported="" name="antlr4-4.5" level="project" /> @@ -101,9 +111,9 @@ <orderEntry type="library" exported="" name="library-1.0-rc1" level="project" /> <orderEntry type="library" exported="" name="org.abego.treelayout.core-1.0.1" level="project" /> <orderEntry type="library" exported="" name="support-v4-23.0.1" level="project" /> - <orderEntry type="library" exported="" name="adapters-1.0-rc1" level="project" /> - <orderEntry type="library" exported="" name="support-annotations-23.0.1" level="project" /> <orderEntry type="library" exported="" name="compilerCommon-1.0-rc1" level="project" /> + <orderEntry type="library" exported="" name="support-annotations-23.0.1" level="project" /> + <orderEntry type="library" exported="" name="adapters-1.0-rc1" level="project" /> <orderEntry type="library" exported="" name="compiler-1.0-rc1" level="project" /> <orderEntry type="library" exported="" name="baseLibrary-1.0-rc1" level="project" /> <orderEntry type="library" exported="" name="twitter-text-1.13.0" level="project" /> @@ -112,8 +122,8 @@ <orderEntry type="library" exported="" name="twitter4j-media-support-4.0.4" level="project" /> <orderEntry type="library" exported="" name="commons-codec-1.10" level="project" /> <orderEntry type="library" exported="" name="support-v13-23.0.1" level="project" /> - <orderEntry type="library" exported="" name="commons-lang3-3.3.2" level="project" /> <orderEntry type="library" exported="" name="kotlin-stdlib-0.12.613" level="project" /> + <orderEntry type="library" exported="" name="commons-lang3-3.3.2" level="project" /> <orderEntry type="library" exported="" name="twitter4j-core-4.0.4" level="project" /> </component> </module>
\ No newline at end of file diff --git a/app/src/main/java/net/lacolaco/smileessence/activity/EditCommandActivity.java b/app/src/main/java/net/lacolaco/smileessence/activity/EditCommandActivity.java index 13c21d0f..ad19ae61 100644 --- a/app/src/main/java/net/lacolaco/smileessence/activity/EditCommandActivity.java +++ b/app/src/main/java/net/lacolaco/smileessence/activity/EditCommandActivity.java @@ -106,7 +106,7 @@ public class EditCommandActivity extends Activity { @Override protected void onDestroy() { for (int i = 0; i < adapter.getCount(); i++) { - CheckBoxModel checkBoxModel = (CheckBoxModel) adapter.getItem(i); + CheckBoxModel checkBoxModel = adapter.getItem(i); Command command = editedCommands.get(i); CommandSetting.setVisible(command.getKey(), checkBoxModel.isChecked()); } diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/Account.java b/app/src/main/java/net/lacolaco/smileessence/entity/Account.java index d5cc6b1b..99a78a5a 100644 --- a/app/src/main/java/net/lacolaco/smileessence/entity/Account.java +++ b/app/src/main/java/net/lacolaco/smileessence/entity/Account.java @@ -140,7 +140,7 @@ public class Account extends Model { } } - public void fetchTweet(long statusId, Consumer<Tweet> callback, boolean forceRetrieve) { + public void fetchTweet(long statusId, boolean forceRetrieve, Consumer<Tweet> callback) { Tweet tweet = Tweet.fetch(statusId); if (forceRetrieve || tweet == null) { new ShowStatusTask(getTwitter(), statusId) { @@ -154,7 +154,7 @@ public class Account extends Model { } } public void fetchTweet(long statusId, Consumer<Tweet> callback) { - fetchTweet(statusId, callback, false); + fetchTweet(statusId, false, callback); } public TwitterTask<Tweet> tryGetStatus(long statusID, final StatusCallback callback) { diff --git a/app/src/main/java/net/lacolaco/smileessence/view/adapter/CustomListAdapter.java b/app/src/main/java/net/lacolaco/smileessence/view/adapter/CustomListAdapter.java index 16691238..bfdacce8 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/adapter/CustomListAdapter.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/adapter/CustomListAdapter.java @@ -82,7 +82,7 @@ public class CustomListAdapter<T extends IViewModel> extends BaseAdapter { // --------------------- Interface Adapter --------------------- @Override - public Object getItem(int position) { + public T getItem(int position) { return frozenList.get(position); } diff --git a/app/src/main/java/net/lacolaco/smileessence/viewmodel/CheckBoxModel.java b/app/src/main/java/net/lacolaco/smileessence/viewmodel/CheckBoxModel.java index 08b3ad7e..015f206f 100644 --- a/app/src/main/java/net/lacolaco/smileessence/viewmodel/CheckBoxModel.java +++ b/app/src/main/java/net/lacolaco/smileessence/viewmodel/CheckBoxModel.java @@ -25,35 +25,37 @@ package net.lacolaco.smileessence.viewmodel; import android.app.Activity; +import android.databinding.*; import android.view.LayoutInflater; +import android.view.MenuItem; import android.view.View; import android.widget.CheckBox; import android.widget.CompoundButton; +import net.lacolaco.smileessence.BR; import net.lacolaco.smileessence.R; +import net.lacolaco.smileessence.databinding.MenuItemCheckboxBinding; public class CheckBoxModel implements IViewModel { // ------------------------------ FIELDS ------------------------------ - private final String text; - private boolean checked; + private final CheckedState state; // --------------------------- CONSTRUCTORS --------------------------- - public CheckBoxModel(String text, boolean isChecked) { - this.text = text; - checked = isChecked; + public CheckBoxModel(String _text, boolean _checked) { + state = new CheckedState(_text, _checked); } // --------------------- GETTER / SETTER METHODS --------------------- public boolean isChecked() { - return checked; + return state.isChecked(); } - public void setChecked(boolean checked) { - this.checked = checked; + public void setChecked(boolean _checked) { + state.setChecked(_checked); } // ------------------------ INTERFACE METHODS ------------------------ @@ -64,17 +66,43 @@ public class CheckBoxModel implements IViewModel { @Override public View getView(Activity activity, LayoutInflater inflater, View convertedView) { if (convertedView == null) { - convertedView = inflater.inflate(R.layout.menu_item_checkbox, null); + MenuItemCheckboxBinding binding = MenuItemCheckboxBinding.inflate(inflater, null, false); + convertedView = binding.getRoot(); + convertedView.setTag(binding); } - CheckBox checkBox = (CheckBox) convertedView.findViewById(R.id.checkBox_menuItem); - checkBox.setText(this.text); - checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - CheckBoxModel.this.checked = isChecked; - } - }); - checkBox.setChecked(checked); + + MenuItemCheckboxBinding binding = (MenuItemCheckboxBinding) convertedView.getTag(); + binding.setCheckedState(state); return convertedView; } + + public static class CheckedState extends BaseObservable { + private String text; + private boolean checked; + + CheckedState(String _text, boolean _checked) { + text = _text; + checked = _checked; + } + + @Bindable + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + notifyPropertyChanged(BR.text); + } + + @Bindable + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + notifyPropertyChanged(BR.checked); + } + } } diff --git a/app/src/main/java/net/lacolaco/smileessence/viewmodel/MessageViewModel.java b/app/src/main/java/net/lacolaco/smileessence/viewmodel/MessageViewModel.java index b6c640b5..5f1f2e8c 100644 --- a/app/src/main/java/net/lacolaco/smileessence/viewmodel/MessageViewModel.java +++ b/app/src/main/java/net/lacolaco/smileessence/viewmodel/MessageViewModel.java @@ -96,13 +96,10 @@ public class MessageViewModel implements IViewModel { int theme = ((MainActivity) activity).getThemeIndex(); NetworkImageView icon = (NetworkImageView) convertedView.findViewById(R.id.imageview_status_icon); ImageCache.getInstance().setImageToView(directMessage.getSender().getProfileImageUrl(), icon); - icon.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - UserDetailDialogFragment dialogFragment = new UserDetailDialogFragment(); - dialogFragment.setUserID(directMessage.getSender().getId()); - DialogHelper.showDialog(activity, dialogFragment); - } + icon.setOnClickListener(v -> { + UserDetailDialogFragment dialogFragment = new UserDetailDialogFragment(); + dialogFragment.setUserID(directMessage.getSender().getId()); + DialogHelper.showDialog(activity, dialogFragment); }); TextView header = (TextView) convertedView.findViewById(R.id.textview_status_header); header.setTextSize(textSize); @@ -123,13 +120,10 @@ public class MessageViewModel implements IViewModel { favorited.setVisibility(View.GONE); int colorBgMessage = Themes.getStyledColor(activity, theme, R.attr.color_message_bg_normal, 0); convertedView.setBackgroundColor(colorBgMessage); - convertedView.setOnClickListener(new ListItemClickListener(activity, new Runnable() { - @Override - public void run() { - MessageDetailDialogFragment dialogFragment = new MessageDetailDialogFragment(); - dialogFragment.setMessageID(directMessage.getId()); - DialogHelper.showDialog(activity, dialogFragment); - } + convertedView.setOnClickListener(new ListItemClickListener(activity, () -> { + MessageDetailDialogFragment dialogFragment = new MessageDetailDialogFragment(); + dialogFragment.setMessageID(directMessage.getId()); + DialogHelper.showDialog(activity, dialogFragment); })); return convertedView; } diff --git a/app/src/main/res/layout/menu_item_checkbox.xml b/app/src/main/res/layout/menu_item_checkbox.xml index baea3bfa..e4c48ebd 100644 --- a/app/src/main/res/layout/menu_item_checkbox.xml +++ b/app/src/main/res/layout/menu_item_checkbox.xml @@ -23,19 +23,25 @@ ~ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ~ SOFTWARE. --> - -<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:background="?android:attr/activatedBackgroundIndicator" - android:orientation="vertical"> - - <CheckBox - android:id="@+id/checkBox_menuItem" +<layout xmlns:android="http://schemas.android.com/apk/res/android"> + <data> + <variable name="checkedState" type="net.lacolaco.smileessence.viewmodel.CheckBoxModel.CheckedState" /> + </data> + <FrameLayout android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginBottom="16dp" - android:layout_marginTop="16dp" - android:paddingLeft="10dp" - android:textAppearance="?android:attr/textAppearanceMedium" /> -</FrameLayout>
\ No newline at end of file + android:layout_height="match_parent" + android:background="?android:attr/activatedBackgroundIndicator" + android:orientation="vertical"> + + <CheckBox + android:id="@+id/checkBox_menuItem" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="16dp" + android:layout_marginTop="16dp" + android:paddingLeft="10dp" + android:checked="@{checkedState.checked}" + android:text="@{checkedState.text}" + android:textAppearance="?android:attr/textAppearanceMedium" /> + </FrameLayout> +</layout>
\ No newline at end of file |