improves known status

This commit is contained in:
tom79 2017-10-21 17:09:10 +02:00
parent 201afec571
commit cef711a897
1 changed files with 9 additions and 8 deletions

View File

@ -61,6 +61,7 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
private StatusListAdapter statusListAdapter; private StatusListAdapter statusListAdapter;
private String max_id; private String max_id;
private List<Status> statuses; private List<Status> statuses;
private ArrayList<String> knownId;
private RetrieveFeedsAsyncTask.Type type; private RetrieveFeedsAsyncTask.Type type;
private RelativeLayout mainLoader, nextElementLoader, textviewNoAction; private RelativeLayout mainLoader, nextElementLoader, textviewNoAction;
private boolean firstLoad; private boolean firstLoad;
@ -85,6 +86,7 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_status, container, false); View rootView = inflater.inflate(R.layout.fragment_status, container, false);
statuses = new ArrayList<>(); statuses = new ArrayList<>();
context = getContext(); context = getContext();
Bundle bundle = this.getArguments(); Bundle bundle = this.getArguments();
boolean comesFromSearch = false; boolean comesFromSearch = false;
@ -104,6 +106,7 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
assert statusesReceived != null; assert statusesReceived != null;
for(Parcelable status: statusesReceived){ for(Parcelable status: statusesReceived){
statuses.add((Status) status); statuses.add((Status) status);
knownId.add(((Status) status).getId());
} }
comesFromSearch = true; comesFromSearch = true;
} }
@ -166,6 +169,7 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
public void onRefresh() { public void onRefresh() {
max_id = null; max_id = null;
statuses = new ArrayList<>(); statuses = new ArrayList<>();
knownId = new ArrayList<>();
firstLoad = true; firstLoad = true;
flag_loading = true; flag_loading = true;
swiped = true; swiped = true;
@ -253,10 +257,6 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
} }
if( statuses != null && statuses.size() > 0) { if( statuses != null && statuses.size() > 0) {
ArrayList<String> knownId = new ArrayList<>();
for(Status st: this.statuses){
knownId.add(st.getId());
}
for(Status tmpStatus: statuses){ for(Status tmpStatus: statuses){
if( !knownId.contains(tmpStatus.getId())) { if( !knownId.contains(tmpStatus.getId())) {
if( type == RetrieveFeedsAsyncTask.Type.HOME && firstLoad && lastReadStatus != null && Long.parseLong(tmpStatus.getId()) > Long.parseLong(lastReadStatus)){ if( type == RetrieveFeedsAsyncTask.Type.HOME && firstLoad && lastReadStatus != null && Long.parseLong(tmpStatus.getId()) > Long.parseLong(lastReadStatus)){
@ -266,6 +266,7 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
tmpStatus.setNew(false); tmpStatus.setNew(false);
} }
this.statuses.add(tmpStatus); this.statuses.add(tmpStatus);
knownId.add(tmpStatus.getId());
} }
} }
@ -315,6 +316,7 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
int top = (v == null) ? 0 : v.getTop(); int top = (v == null) ? 0 : v.getTop();
status.setReplies(new ArrayList<Status>()); status.setReplies(new ArrayList<Status>());
statuses.add(0,status); statuses.add(0,status);
knownId.add(0,status.getId());
SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null); String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null);
if( !status.getAccount().getId().equals(userId)) if( !status.getAccount().getId().equals(userId))
@ -338,6 +340,7 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
status.setReplies(new ArrayList<Status>()); status.setReplies(new ArrayList<Status>());
statuses.add(0, status); statuses.add(0, status);
} }
knownId.add(0, status.getId());
if (textviewNoAction.getVisibility() == View.VISIBLE) if (textviewNoAction.getVisibility() == View.VISIBLE)
textviewNoAction.setVisibility(View.GONE); textviewNoAction.setVisibility(View.GONE);
} }
@ -518,10 +521,6 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
@Override @Override
public void onRetrieveMissingFeeds(List<Status> statuses) { public void onRetrieveMissingFeeds(List<Status> statuses) {
if( statuses != null && statuses.size() > 0) { if( statuses != null && statuses.size() > 0) {
ArrayList<String> knownId = new ArrayList<>();
for (Status st : this.statuses) {
knownId.add(st.getId());
}
if( lv_status.getFirstVisiblePosition() > 1 ) { if( lv_status.getFirstVisiblePosition() > 1 ) {
int index = lv_status.getFirstVisiblePosition() + statuses.size(); int index = lv_status.getFirstVisiblePosition() + statuses.size();
View v = lv_status.getChildAt(0); View v = lv_status.getChildAt(0);
@ -530,6 +529,7 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
if (!knownId.contains(statuses.get(i).getId())) { if (!knownId.contains(statuses.get(i).getId())) {
if (type == RetrieveFeedsAsyncTask.Type.HOME) if (type == RetrieveFeedsAsyncTask.Type.HOME)
statuses.get(i).setNew(true); statuses.get(i).setNew(true);
knownId.add(0, statuses.get(i).getId());
statuses.get(i).setReplies(new ArrayList<Status>()); statuses.get(i).setReplies(new ArrayList<Status>());
this.statuses.add(0, statuses.get(i)); this.statuses.add(0, statuses.get(i));
SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
@ -545,6 +545,7 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
if (!knownId.contains(statuses.get(i).getId())) { if (!knownId.contains(statuses.get(i).getId())) {
if (type == RetrieveFeedsAsyncTask.Type.HOME) if (type == RetrieveFeedsAsyncTask.Type.HOME)
statuses.get(i).setNew(true); statuses.get(i).setNew(true);
knownId.add(0,statuses.get(i).getId());
statuses.get(i).setReplies(new ArrayList<Status>()); statuses.get(i).setReplies(new ArrayList<Status>());
this.statuses.add(0, statuses.get(i)); this.statuses.add(0, statuses.get(i));
SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);