competitor is moved to the last position if the MaxPointReason is set

This commit is contained in:
Peter Siegmund committed 2016-02-29 13:03:42 +01:00
1 parent 660765f243
commit a774947d4f
3 files changed
+17 -14

No files matched your search

@@ -178,7 +178,7 @@ public class FinishListAdapter extends BaseDraggableSwipeAdapter<FinishListAdapt
void onLongClick(CompetitorResultWithIdImpl item);
void onEditItem(CompetitorResultWithIdImpl item);
void onEditItem(CompetitorResultWithIdImpl item, int position);
}
public class ViewHolder extends BaseDraggableSwipeViewHolder implements View.OnLongClickListener {
@@ -200,7 +200,7 @@ public class FinishListAdapter extends BaseDraggableSwipeAdapter<FinishListAdapt
@Override
public void onClick(View v) {
if (mListener != null) {
mListener.onEditItem(mCompetitor.get(getAdapterPosition()));
mListener.onEditItem(mCompetitor.get(getAdapterPosition()), getAdapterPosition() + 1);
}
}
});
@@ -379,25 +379,28 @@ public class TrackingListFragment extends BaseFragment
}
@Override
public void onEditItem(final CompetitorResultWithIdImpl item) {
public void onEditItem(final CompetitorResultWithIdImpl item, int position) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AppTheme_AlertDialog);
builder.setTitle(item.getCompetitorDisplayName());
final CompetitorEditLayout layout = new CompetitorEditLayout(getActivity(), item, mFinishedAdapter.getItemCount());
final CompetitorEditLayout layout = new CompetitorEditLayout(getActivity(), item, position, mFinishedAdapter.getItemCount());
builder.setView(layout);
builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
CompetitorResultWithIdImpl newData = layout.getValue();
CompetitorResultWithIdImpl newItem = layout.getValue();
int index = mFinishedData.indexOf(item);
if (item.getOneBasedRank() != newData.getOneBasedRank()) {
int newPos = newData.getOneBasedRank();
if (item.getMaxPointsReason() != newItem.getMaxPointsReason() && item.getMaxPointsReason() == MaxPointsReason.NONE) {
mFinishedData.remove(item);
mFinishedData.add(mFinishedData.size(), newItem);
} else if (item.getOneBasedRank() != newItem.getOneBasedRank()) {
int newPos = newItem.getOneBasedRank();
if (newPos > 0) {
newPos -= 1;
}
mFinishedData.remove(index);
mFinishedData.add(newPos, newData);
mFinishedData.remove(item);
mFinishedData.add(newPos, newItem);
} else {
replaceItemInPositioningList(index, item, newData);
replaceItemInPositioningList(index, item, newItem);
}
mFinishedAdapter.notifyDataSetChanged();
getRaceState().setFinishPositioningListChanged(MillisecondsTimePoint.now(), getCompetitorResults());
@@ -41,12 +41,12 @@ public class CompetitorEditLayout extends FrameLayout {
private NumberPicker mSeconds;
private EditText mComment;
public CompetitorEditLayout(Context context, CompetitorResultWithIdImpl competitor, int maxPos) {
public CompetitorEditLayout(Context context, CompetitorResultWithIdImpl competitor, int currentPos, int maxPos) {
super(context);
init(competitor, maxPos);
init(competitor, currentPos, maxPos);
}
private void init(CompetitorResultWithIdImpl competitor, int maxPos) {
private void init(CompetitorResultWithIdImpl competitor, int currentPos, int maxPos) {
View layout = LayoutInflater.from(getContext()).inflate(R.layout.race_tracking_list_competitor_edit, this, false);
mCompetitor = competitor;
@@ -79,7 +79,7 @@ public class CompetitorEditLayout extends FrameLayout {
StringArraySpinnerAdapter positionAdapter = new StringArraySpinnerAdapter(getPositionList(maxPos));
mPosition.setAdapter(positionAdapter);
mPosition.setOnItemSelectedListener(new SpinnerSelectedListener(positionAdapter));
mPosition.setSelection(mCompetitor.getOneBasedRank());
mPosition.setSelection(currentPos);
}
mPenalty = ViewHelper.get(layout, R.id.competitor_penalty);