-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
17 changed files
with
430 additions
and
260 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
41 changes: 41 additions & 0 deletions
41
src/main/java/de/avalax/fitbuddy/presentation/edit/SelectableViewHolder.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
package de.avalax.fitbuddy.presentation.edit; | ||
|
||
import android.support.v7.widget.RecyclerView; | ||
import android.view.View; | ||
import android.widget.TextView; | ||
|
||
import de.avalax.fitbuddy.R; | ||
|
||
import static android.graphics.Color.TRANSPARENT; | ||
|
||
public class SelectableViewHolder extends RecyclerView.ViewHolder { | ||
private final TextView titleTextView; | ||
private final TextView subtitleTextView; | ||
|
||
public SelectableViewHolder(View v) { | ||
super(v); | ||
titleTextView = v.findViewById(R.id.item_title); | ||
subtitleTextView = v.findViewById(R.id.item_subtitle); | ||
} | ||
|
||
public TextView getTitleTextView() { | ||
return titleTextView; | ||
} | ||
|
||
public TextView getSubtitleTextView() { | ||
return subtitleTextView; | ||
} | ||
|
||
public View getView() { | ||
return itemView; | ||
} | ||
|
||
public void select() { | ||
int color = itemView.getResources().getColor(R.color.primaryDarkColor); | ||
itemView.setBackgroundColor(color); | ||
} | ||
|
||
public void deselect() { | ||
itemView.setBackgroundColor(TRANSPARENT); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
124 changes: 124 additions & 0 deletions
124
src/main/java/de/avalax/fitbuddy/presentation/edit/exercise/SetAdapter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
package de.avalax.fitbuddy.presentation.edit.exercise; | ||
|
||
import android.app.Activity; | ||
import android.content.Intent; | ||
import android.support.v4.util.ArraySet; | ||
import android.support.v7.widget.RecyclerView; | ||
import android.util.Log; | ||
import android.view.LayoutInflater; | ||
import android.view.View; | ||
import android.view.ViewGroup; | ||
|
||
import de.avalax.fitbuddy.R; | ||
import de.avalax.fitbuddy.domain.model.set.Set; | ||
import de.avalax.fitbuddy.domain.model.set.SetException; | ||
import de.avalax.fitbuddy.domain.model.set.Sets; | ||
import de.avalax.fitbuddy.presentation.edit.SelectableViewHolder; | ||
import de.avalax.fitbuddy.presentation.edit.set.EditSetActivity; | ||
|
||
import static de.avalax.fitbuddy.presentation.edit.exercise.EditExerciseActivity.EDIT_SET; | ||
|
||
public class SetAdapter extends RecyclerView.Adapter<SelectableViewHolder> { | ||
private Sets sets; | ||
private EditExerciseApplicationService editExerciseApplicationService; | ||
private Activity activity; | ||
private java.util.Set<Set> selections; | ||
|
||
public SetAdapter(Activity activity, | ||
Sets sets, | ||
EditExerciseApplicationService editExerciseApplicationService) { | ||
super(); | ||
this.activity = activity; | ||
this.sets = sets; | ||
this.editExerciseApplicationService = editExerciseApplicationService; | ||
this.selections = new ArraySet<>(); | ||
} | ||
|
||
@Override | ||
public SelectableViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { | ||
LayoutInflater inflater = LayoutInflater.from(activity); | ||
View view = inflater.inflate(R.layout.item_set, parent, false); | ||
return new SelectableViewHolder(view); | ||
} | ||
|
||
@Override | ||
public void onBindViewHolder(SelectableViewHolder holder, int position) { | ||
try { | ||
Set set = sets.get(position); | ||
String title = editExerciseApplicationService.title(set); | ||
String subtitle = editExerciseApplicationService.subtitle(set); | ||
|
||
holder.getTitleTextView().setText(title); | ||
holder.getSubtitleTextView().setText(subtitle); | ||
holder.deselect(); | ||
|
||
holder.getView().setOnClickListener(view -> { | ||
if (selections.isEmpty()) { | ||
Intent intent = new Intent(activity, EditSetActivity.class); | ||
intent.putExtra("set", set); | ||
intent.putExtra("position", holder.getAdapterPosition()); | ||
activity.startActivityForResult(intent, EDIT_SET); | ||
} else { | ||
if (isSelected(holder)) { | ||
deselect(holder); | ||
} else { | ||
select(holder); | ||
} | ||
} | ||
}); | ||
holder.getView().setOnLongClickListener(view -> { | ||
select(holder); | ||
return true; | ||
}); | ||
} catch (SetException e) { | ||
Log.e("SetException", e.getMessage(), e); | ||
} | ||
} | ||
|
||
private boolean isSelected(SelectableViewHolder holder) { | ||
boolean isSelected = false; | ||
try { | ||
isSelected = selections.contains(sets.get(holder.getAdapterPosition())); | ||
|
||
} catch (SetException e) { | ||
Log.e("SetException", e.getMessage(), e); | ||
} | ||
return isSelected; | ||
} | ||
|
||
private void deselect(SelectableViewHolder holder) { | ||
try { | ||
selections.remove(sets.get(holder.getAdapterPosition())); | ||
holder.deselect(); | ||
((EditExerciseActivity) activity).updateToolbar(selections.size()); | ||
} catch (SetException e) { | ||
Log.e("SetException", e.getMessage(), e); | ||
} | ||
} | ||
|
||
private void select(SelectableViewHolder holder) { | ||
try { | ||
selections.add(sets.get(holder.getAdapterPosition())); | ||
holder.select(); | ||
((EditExerciseActivity) activity).updateToolbar(selections.size()); | ||
} catch (SetException e) { | ||
Log.e("SetException", e.getMessage(), e); | ||
} | ||
} | ||
|
||
@Override | ||
public long getItemId(int position) { | ||
return position; | ||
} | ||
|
||
@Override | ||
public int getItemCount() { | ||
return sets == null ? 0 : sets.size(); | ||
} | ||
|
||
public void removeSelections() { | ||
sets.removeAll(selections); | ||
selections.clear(); | ||
notifyDataSetChanged(); | ||
} | ||
} |
Oops, something went wrong.