From c10d3adbedbe0e4816b59e816ef444797cd7b98a Mon Sep 17 00:00:00 2001 From: Mariotaku Lee Date: Thu, 24 Mar 2016 16:36:18 +0800 Subject: [PATCH] fixed instance state saving --- .../mariotaku/twidere/activity/ComposeActivity.java | 5 +++-- .../mariotaku/twidere/adapter/DummyItemAdapter.java | 4 ++-- .../twidere/adapter/ParcelableStatusesAdapter.java | 3 ++- .../twidere/adapter/ParcelableUserListsAdapter.java | 3 ++- .../twidere/adapter/ParcelableUsersAdapter.java | 3 ++- .../twidere/adapter/iface/IStatusesAdapter.java | 2 +- .../twidere/adapter/iface/IUserListsAdapter.java | 2 +- .../twidere/adapter/iface/IUsersAdapter.java | 2 +- .../mariotaku/twidere/fragment/StatusFragment.java | 10 ++++++---- .../org/mariotaku/twidere/util/TwidereLinkify.java | 11 ++++++----- 10 files changed, 26 insertions(+), 19 deletions(-) diff --git a/twidere/src/main/java/org/mariotaku/twidere/activity/ComposeActivity.java b/twidere/src/main/java/org/mariotaku/twidere/activity/ComposeActivity.java index 984f87691..f067966d5 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/activity/ComposeActivity.java +++ b/twidere/src/main/java/org/mariotaku/twidere/activity/ComposeActivity.java @@ -713,8 +713,9 @@ public class ComposeActivity extends BaseActivity implements OnMenuItemClickList if (savedInstanceState != null) { // Restore from previous saved state - mAccountsAdapter.setSelectedAccountIds(Utils.newParcelableArray( - savedInstanceState.getParcelableArray(EXTRA_ACCOUNT_KEY), UserKey.CREATOR)); + final UserKey[] selected = Utils.newParcelableArray(savedInstanceState + .getParcelableArray(EXTRA_ACCOUNT_KEYS), UserKey.CREATOR); + mAccountsAdapter.setSelectedAccountIds(selected); mIsPossiblySensitive = savedInstanceState.getBoolean(EXTRA_IS_POSSIBLY_SENSITIVE); final ArrayList mediaList = savedInstanceState.getParcelableArrayList(EXTRA_MEDIA); if (mediaList != null) { diff --git a/twidere/src/main/java/org/mariotaku/twidere/adapter/DummyItemAdapter.java b/twidere/src/main/java/org/mariotaku/twidere/adapter/DummyItemAdapter.java index 2999db4a3..bfa1e4502 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/adapter/DummyItemAdapter.java +++ b/twidere/src/main/java/org/mariotaku/twidere/adapter/DummyItemAdapter.java @@ -320,8 +320,8 @@ public final class DummyItemAdapter implements IStatusesAdapter, } @Override - public void setData(Object o) { - + public boolean setData(Object o) { + return false; } diff --git a/twidere/src/main/java/org/mariotaku/twidere/adapter/ParcelableStatusesAdapter.java b/twidere/src/main/java/org/mariotaku/twidere/adapter/ParcelableStatusesAdapter.java index 7fb54e1bd..693f08357 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/adapter/ParcelableStatusesAdapter.java +++ b/twidere/src/main/java/org/mariotaku/twidere/adapter/ParcelableStatusesAdapter.java @@ -210,7 +210,7 @@ public abstract class ParcelableStatusesAdapter extends LoadMoreSupportAdapter data) { + public boolean setData(List data) { mData = data; if (data instanceof ObjectCursor || data == null || data.isEmpty()) { mLastItemFiltered = false; @@ -218,6 +218,7 @@ public abstract class ParcelableStatusesAdapter extends LoadMoreSupportAdapter getData() { diff --git a/twidere/src/main/java/org/mariotaku/twidere/adapter/ParcelableUserListsAdapter.java b/twidere/src/main/java/org/mariotaku/twidere/adapter/ParcelableUserListsAdapter.java index a98952ac5..36c62b415 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/adapter/ParcelableUserListsAdapter.java +++ b/twidere/src/main/java/org/mariotaku/twidere/adapter/ParcelableUserListsAdapter.java @@ -71,9 +71,10 @@ public class ParcelableUserListsAdapter extends LoadMoreSupportAdapter data) { + public boolean setData(List data) { mData = data; notifyDataSetChanged(); + return true; } protected void bindUserList(UserListViewHolder holder, int position) { diff --git a/twidere/src/main/java/org/mariotaku/twidere/adapter/ParcelableUsersAdapter.java b/twidere/src/main/java/org/mariotaku/twidere/adapter/ParcelableUsersAdapter.java index cd86071a9..b6459e61b 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/adapter/ParcelableUsersAdapter.java +++ b/twidere/src/main/java/org/mariotaku/twidere/adapter/ParcelableUsersAdapter.java @@ -73,9 +73,10 @@ public class ParcelableUsersAdapter extends LoadMoreSupportAdapter data) { + public boolean setData(List data) { mData = data; notifyDataSetChanged(); + return true; } protected void bindUser(UserViewHolder holder, int position) { diff --git a/twidere/src/main/java/org/mariotaku/twidere/adapter/iface/IStatusesAdapter.java b/twidere/src/main/java/org/mariotaku/twidere/adapter/iface/IStatusesAdapter.java index 7136b2a17..b52bbfde5 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/adapter/iface/IStatusesAdapter.java +++ b/twidere/src/main/java/org/mariotaku/twidere/adapter/iface/IStatusesAdapter.java @@ -50,7 +50,7 @@ public interface IStatusesAdapter extends IContentCardAdapter, IGapSupport boolean isSensitiveContentEnabled(); - void setData(Data data); + boolean setData(Data data); boolean shouldShowAccountsColor(); diff --git a/twidere/src/main/java/org/mariotaku/twidere/adapter/iface/IUserListsAdapter.java b/twidere/src/main/java/org/mariotaku/twidere/adapter/iface/IUserListsAdapter.java index b66c6fe24..c91187344 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/adapter/iface/IUserListsAdapter.java +++ b/twidere/src/main/java/org/mariotaku/twidere/adapter/iface/IUserListsAdapter.java @@ -37,7 +37,7 @@ public interface IUserListsAdapter extends IContentCardAdapter { int getUserListsCount(); - void setData(Data data); + boolean setData(Data data); boolean shouldShowAccountsColor(); diff --git a/twidere/src/main/java/org/mariotaku/twidere/adapter/iface/IUsersAdapter.java b/twidere/src/main/java/org/mariotaku/twidere/adapter/iface/IUsersAdapter.java index 66bdddaee..a1469a733 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/adapter/iface/IUsersAdapter.java +++ b/twidere/src/main/java/org/mariotaku/twidere/adapter/iface/IUsersAdapter.java @@ -38,7 +38,7 @@ public interface IUsersAdapter extends IContentCardAdapter { int getUserCount(); - void setData(Data data); + boolean setData(Data data); @Nullable UserClickListener getUserClickListener(); diff --git a/twidere/src/main/java/org/mariotaku/twidere/fragment/StatusFragment.java b/twidere/src/main/java/org/mariotaku/twidere/fragment/StatusFragment.java index 5a66c63b3..6f9503ff3 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/fragment/StatusFragment.java +++ b/twidere/src/main/java/org/mariotaku/twidere/fragment/StatusFragment.java @@ -643,9 +643,9 @@ public class StatusFragment extends BaseSupportFragment implements LoaderCallbac } private void setConversation(List data) { - mHasMoreConversation = data != null && !data.isEmpty(); final ReadPosition readPosition = saveReadPosition(); - mStatusAdapter.setData(data); + final boolean changed = mStatusAdapter.setData(data); + mHasMoreConversation = data != null && changed; restoreReadPosition(readPosition); } @@ -1930,9 +1930,10 @@ public class StatusFragment extends BaseSupportFragment implements LoaderCallbac } @Override - public void setData(List data) { + public boolean setData(List data) { final ParcelableStatus status = mStatus; - if (status == null) return; + if (status == null) return false; + boolean changed = !CompareUtils.objectEquals(mData, data); mData = data; if (data == null || data.isEmpty()) { setTypeCount(ITEM_IDX_CONVERSATION, 0); @@ -1967,6 +1968,7 @@ public class StatusFragment extends BaseSupportFragment implements LoaderCallbac } notifyDataSetChanged(); updateItemDecoration(); + return changed; } @Override diff --git a/twidere/src/main/java/org/mariotaku/twidere/util/TwidereLinkify.java b/twidere/src/main/java/org/mariotaku/twidere/util/TwidereLinkify.java index 0824c6258..7e65f2dff 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/util/TwidereLinkify.java +++ b/twidere/src/main/java/org/mariotaku/twidere/util/TwidereLinkify.java @@ -111,20 +111,20 @@ public final class TwidereLinkify implements Constants { } public void applyAllLinks(@Nullable Spannable text, final UserKey accountKey, - final long extraId, final boolean sensitive, - final boolean skipLinksInText) { + final long extraId, final boolean sensitive, + final boolean skipLinksInText) { applyAllLinks(text, mOnLinkClickListener, accountKey, extraId, sensitive, mHighlightOption, skipLinksInText); } public void applyAllLinks(@Nullable Spannable text, final UserKey accountKey, - final boolean sensitive, final boolean skipLinksInText) { + final boolean sensitive, final boolean skipLinksInText) { applyAllLinks(text, mOnLinkClickListener, accountKey, -1, sensitive, mHighlightOption, skipLinksInText); } public void applyAllLinks(@Nullable Spannable text, final UserKey accountKey, - final long extraId, final boolean sensitive, - final int highlightOption, final boolean skipLinksInText) { + final long extraId, final boolean sensitive, + final int highlightOption, final boolean skipLinksInText) { applyAllLinks(text, mOnLinkClickListener, accountKey, extraId, sensitive, highlightOption, skipLinksInText); } @@ -258,6 +258,7 @@ public final class TwidereLinkify implements Constants { break; } case LINK_TYPE_STATUS: { + if (!USER_TYPE_TWITTER_COM.equals(accountKey.getHost())) break; final int length = string.length(); final URLSpan[] spans = string.getSpans(0, length, URLSpan.class); for (final URLSpan span : spans) {