aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2015-09-15 18:40:47 +0900
committerKazuki Yamaguchi <k@rhe.jp>2015-09-15 18:40:47 +0900
commit897cdb295354cf8d8806270302cd7697cd76c54e (patch)
treec9a1a35c37a5230d2f0b118e74dbcbb378b935dd /app
parent18a0f6c1d7795c3f6fe0667ece80ebcd17b3bb95 (diff)
downloadSmileEssence-897cdb295354cf8d8806270302cd7697cd76c54e.tar.gz
データバインディングを使い始めた
Diffstat (limited to 'app')
-rw-r--r--app/app.iml24
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/activity/EditCommandActivity.java2
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/entity/Account.java4
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/adapter/CustomListAdapter.java2
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/viewmodel/CheckBoxModel.java64
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/viewmodel/MessageViewModel.java22
-rw-r--r--app/src/main/res/layout/menu_item_checkbox.xml36
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