use of com.github.dedis.popstellar.model.objects.event.EventCategory in project popstellar by dedis.
the class EventExpandableListViewAdapter method getChildView.
/**
* Gets a View that displays the data for the given child within the given group.
*
* @param groupPosition the position of the group that contains the child
* @param childPosition the position of the child (for which the View is returned) within the
* group
* @param isLastChild Whether the child is the last child within the group
* @param convertView the old view to reuse, if possible. You should check that this view is
* non-null and of an appropriate type before using. If it is not possible to convert this
* view to display the correct data, this method can create a new view. It is not guaranteed
* that the convertView will have been previously created by {@link #getChildView(int, int,
* boolean, View, ViewGroup)}.
* @param parent the parent that this view will eventually be attached to
* @return the View corresponding to the child at the specified position
*/
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
Event event = ((Event) getChild(groupPosition, childPosition));
EventLayoutBinding layoutEventBinding;
if (convertView == null) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
layoutEventBinding = EventLayoutBinding.inflate(inflater, parent, false);
} else {
layoutEventBinding = DataBindingUtil.getBinding(convertView);
}
layoutEventBinding.setEvent(event);
EventCategory category = (EventCategory) getGroup(groupPosition);
switch(event.getType()) {
case ELECTION:
return setupElectionElement((Election) event, category, layoutEventBinding);
case ROLL_CALL:
return setupRollCallElement((RollCall) event, layoutEventBinding);
default:
layoutEventBinding.setLifecycleOwner(lifecycleOwner);
layoutEventBinding.executePendingBindings();
return layoutEventBinding.getRoot();
}
}
use of com.github.dedis.popstellar.model.objects.event.EventCategory in project popstellar by dedis.
the class EventExpandableListViewAdapter method getGroupView.
/**
* Gets a View that displays the given group. This View is only for the group--the Views for the
* group's children will be fetched using {@link #getChildView(int, int, boolean, View,
* ViewGroup)}.
*
* @param groupPosition the position of the group for which the View is returned
* @param isExpanded whether the group is expanded or collapsed
* @param convertView the old view to reuse, if possible. You should check that this view is
* non-null and of an appropriate type before using. If it is not possible to convert this
* view to display the correct data, this method can create a new view. It is not guaranteed
* that the convertView will have been previously created by {@link #getGroupView(int,
* boolean, View, ViewGroup)}.
* @param parent the parent that this view will eventually be attached to
* @return the View corresponding to the group at the specified position
*/
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
EventCategory eventCategory = (EventCategory) getGroup(groupPosition);
EventCategoryLayoutBinding binding;
if (convertView == null) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
binding = EventCategoryLayoutBinding.inflate(inflater, parent, false);
} else {
binding = DataBindingUtil.getBinding(convertView);
}
binding.setCategoryName(eventCategory.name());
Context context = parent.getContext();
AddEventListener addEventOnClickListener = () -> {
Builder builder = new Builder(context);
builder.setTitle("Select Event Type");
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(context, android.R.layout.select_dialog_singlechoice);
arrayAdapter.add("Roll-Call Event");
arrayAdapter.add("Election Event");
builder.setNegativeButton("Cancel", (dialog, which) -> dialog.dismiss());
builder.setAdapter(arrayAdapter, ((dialog, which) -> {
dialog.dismiss();
viewModel.chooseEventType(EventType.values()[which]);
}));
builder.show();
};
binding.setIsFutureCategory(eventCategory.equals(FUTURE));
binding.setViewmodel(viewModel);
binding.setLifecycleOwner(lifecycleOwner);
binding.setAddEventListener(addEventOnClickListener);
binding.executePendingBindings();
binding.addFutureEventButton.setFocusable(false);
return binding.getRoot();
}
Aggregations