switch from ArrayList to SynchronizedList because of the async loader

This commit is contained in:
Peter Siegmund committed 2016-04-11 14:47:50 +02:00
1 parent 9b73cb1444
commit b97db4b10b
3 files changed
+22 -17

No files matched your search

@@ -1,6 +1,6 @@
package com.sap.sailing.racecommittee.app.ui.adapters;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
@@ -9,16 +9,19 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.sap.sailing.android.shared.logging.ExLog;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.racecommittee.app.R;
public class CompetitorAdapter extends RecyclerView.Adapter<CompetitorAdapter.ViewHolder> {
private static final String TAG = CompetitorAdapter.class.getName();
private Context mContext;
private ArrayList<Competitor> mData;
private List<Competitor> mData;
private CompetitorClick mListener;
public CompetitorAdapter(Context context, ArrayList<Competitor> data) {
public CompetitorAdapter(Context context, List<Competitor> data) {
mContext = context;
mData = data;
}
@@ -42,6 +45,8 @@ public class CompetitorAdapter extends RecyclerView.Adapter<CompetitorAdapter.Vi
if (holder.competitor != null) {
holder.competitor.setText(name);
}
} else {
ExLog.e(mContext, TAG, "Competitor at position " + position + " was unexpected null");
}
}
@@ -1,5 +1,7 @@
package com.sap.sailing.racecommittee.app.ui.adapters;
import java.util.List;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.support.v4.view.ViewCompat;
@@ -18,15 +20,13 @@ import com.sap.sailing.racecommittee.app.R;
import com.sap.sailing.racecommittee.app.domain.impl.CompetitorResultWithIdImpl;
import com.sap.sailing.racecommittee.app.utils.ThemeHelper;
import java.util.ArrayList;
public class FinishListAdapter extends BaseDraggableSwipeAdapter<FinishListAdapter.ViewHolder> {
private Context mContext;
private ArrayList<CompetitorResultWithIdImpl> mCompetitor;
private List<CompetitorResultWithIdImpl> mCompetitor;
private FinishEvents mListener;
public FinishListAdapter(Context context, ArrayList<CompetitorResultWithIdImpl> competitor) {
public FinishListAdapter(Context context, List<CompetitorResultWithIdImpl> competitor) {
setHasStableIds(true);
mContext = context;
mCompetitor = competitor;
@@ -70,8 +70,8 @@ public class TrackingListFragment extends BaseFragment
private RecyclerView.Adapter<FinishListAdapter.ViewHolder> mFinishedAdapter;
private CompetitorAdapter mCompetitorAdapter;
private ArrayList<CompetitorResultWithIdImpl> mFinishedData;
private ArrayList<Competitor> mCompetitorData;
private List<CompetitorResultWithIdImpl> mFinishedData;
private List<Competitor> mCompetitorData;
private int mId = 0;
private HeaderLayout mHeader;
private TextView mPageTitle;
@@ -81,7 +81,7 @@ public class TrackingListFragment extends BaseFragment
private List<Comparator<Competitor>> mComparators;
public TrackingListFragment() {
mCompetitorData = new ArrayList<>();
mCompetitorData = Collections.synchronizedList(new ArrayList<Competitor>());
}
public static TrackingListFragment newInstance(Bundle args, int startMode) {
@@ -164,6 +164,7 @@ public class TrackingListFragment extends BaseFragment
mComparators = new ArrayList<>();
mComparators.add(new CompetitorSailIdComparator());
mComparators.add(new NaturalNamedComparator<Competitor>());
mComparator = mComparators.get(0);
mFinishedData = initializeFinishList();
loadCompetitors();
@@ -235,7 +236,6 @@ public class TrackingListFragment extends BaseFragment
}
}
mComparator = mComparators.get(0);
Util.addAll(getRace().getCompetitors(), mCompetitorData);
sortCompetitors();
mCompetitorAdapter.notifyDataSetChanged();
@@ -286,7 +286,7 @@ public class TrackingListFragment extends BaseFragment
domainFactory.getCompetitorStore().allowCompetitorResetToDefaults(competitor);
}
Loader<?> competitorLoaders = getLoaderManager()
final Loader<?> competitorLoader = getLoaderManager()
.initLoader(0, null, dataManager.createCompetitorsLoader(getRace(), new LoadClient<Collection<Competitor>>() {
@Override
@@ -296,14 +296,14 @@ public class TrackingListFragment extends BaseFragment
@Override
public void onLoadSucceeded(Collection<Competitor> data, boolean isCached) {
if (isAdded()) {
if (isAdded() && !isCached) {
onLoadCompetitorsSucceeded(data);
}
}
}));
// Force load to get non-cached remote competitors...
competitorLoaders.forceLoad();
competitorLoader.forceLoad();
}
protected void onLoadCompetitorsSucceeded(Collection<Competitor> data) {
@@ -336,8 +336,8 @@ public class TrackingListFragment extends BaseFragment
return DataManager.create(getActivity()).getDataStore().getDomainFactory().getCompetitorStore();
}
private ArrayList<CompetitorResultWithIdImpl> initializeFinishList() {
ArrayList<CompetitorResultWithIdImpl> positioning = new ArrayList<>();
private List<CompetitorResultWithIdImpl> initializeFinishList() {
List<CompetitorResultWithIdImpl> positioning = Collections.synchronizedList(new ArrayList<CompetitorResultWithIdImpl>());
if (getRaceState() != null && getRaceState().getFinishPositioningList() != null) {
for (CompetitorResult results : getRaceState().getFinishPositioningList()) {
positioning.add(new CompetitorResultWithIdImpl(mId, results));