protected BaseRecyclerAdapter(BaseAniDroidActivity context, List <T> items, RecyclerCardType cardType) : base(context) { Items = items ?? throw new ArgumentNullException(nameof(items)); CardType = cardType; DefaultIconColor = ColorStateList.ValueOf(new Color(context.GetThemedColor(Resource.Attribute.Secondary_Dark))); FavoriteIconColor = ColorStateList.ValueOf(new Color(ContextCompat.GetColor(context, Resource.Color.Favorite_Red))); }
public static View CreateCheckboxSettingRow(BaseAniDroidActivity context, string name, string description, bool isChecked, EventHandler <CompoundButton.CheckedChangeEventArgs> checkEvent) { var view = context.LayoutInflater.Inflate(Resource.Layout.View_SettingItem_Checkbox, null); var nameView = view.FindViewById <TextView>(Resource.Id.SettingItem_Name); var textTwoView = view.FindViewById <TextView>(Resource.Id.SettingItem_Details); if (!string.IsNullOrWhiteSpace(name)) { nameView.Text = name; } else { nameView.Visibility = ViewStates.Gone; textTwoView.SetTextColor(new Color(context.GetThemedColor(Resource.Attribute.Background_Text))); } if (!string.IsNullOrWhiteSpace(description)) { textTwoView.Text = description; } else { textTwoView.Visibility = ViewStates.Gone; } var checkboxView = view.FindViewById <AppCompatCheckBox>(Resource.Id.SettingItem_Checkbox); checkboxView.Id = (int)DateTime.Now.Ticks; checkboxView.Checked = isChecked; checkboxView.CheckedChange += checkEvent; return(view); }
public AniListActivityRecyclerAdapter(BaseAniDroidActivity context, AniListActivityRecyclerAdapter adapter) : base(context, adapter) { _presenter = adapter._presenter; _userId = adapter._userId; _userNameColorHex = $"#{Context.GetThemedColor(Resource.Attribute.Primary) & 0xffffff:X6}"; _actionColorHex = $"#{Context.GetThemedColor(Resource.Attribute.Primary_Dark) & 0xffffff:X6}"; _defaultIconColor = new Color(context.GetThemedColor(Resource.Attribute.Secondary_Dark)); CustomCardUseItemDecoration = adapter.CustomCardUseItemDecoration; }
public AniListActivityRecyclerAdapter(BaseAniDroidActivity context, IAniListActivityPresenter presenter, IAsyncEnumerable <OneOf <IPagedData <AniListActivity>, IAniListError> > enumerable, int?currentUserId) : base(context, enumerable, RecyclerCardType.Custom) { _presenter = presenter; _userId = currentUserId; _userNameColorHex = $"#{Context.GetThemedColor(Resource.Attribute.Primary) & 0xffffff:X6}"; _actionColorHex = $"#{Context.GetThemedColor(Resource.Attribute.Primary_Dark) & 0xffffff:X6}"; _defaultIconColor = new Color(context.GetThemedColor(Resource.Attribute.Secondary_Dark)); CustomCardUseItemDecoration = true; }
public static View CreateSwitchSettingRow(BaseAniDroidActivity context, string name, string description, bool switchState, bool useUniqueControlId, EventHandler <CompoundButton.CheckedChangeEventArgs> switchEvent) { var view = context.LayoutInflater.Inflate(Resource.Layout.View_SettingItem_Switch, null); var nameView = view.FindViewById <TextView>(Resource.Id.SettingItem_Name); var textTwoView = view.FindViewById <TextView>(Resource.Id.SettingItem_Details); if (!string.IsNullOrWhiteSpace(name)) { nameView.Text = name; } else { nameView.Visibility = ViewStates.Gone; textTwoView.SetTextColor(new Color(context.GetThemedColor(Resource.Attribute.Background_Text))); } if (!string.IsNullOrWhiteSpace(description)) { textTwoView.Text = description; } else { textTwoView.Visibility = ViewStates.Gone; } var switchView = view.FindViewById <SwitchCompat>(Resource.Id.SettingItem_Switch); if (useUniqueControlId) { switchView.Id = (int)DateTime.Now.Ticks; } switchView.Checked = switchState; switchView.CheckedChange += switchEvent; return(view); }
public static View CreateSpinnerSettingRow(BaseAniDroidActivity context, string name, string description, IList <string> items, int selectedPosition, EventHandler <AdapterView.ItemSelectedEventArgs> selectedEvent) { var view = context.LayoutInflater.Inflate(Resource.Layout.View_SettingItem_Spinner, null); var nameView = view.FindViewById <TextView>(Resource.Id.SettingItem_Name); var textTwoView = view.FindViewById <TextView>(Resource.Id.SettingItem_Details); if (!string.IsNullOrWhiteSpace(name)) { nameView.Text = name; } else { nameView.Visibility = ViewStates.Gone; textTwoView.SetTextColor(new Color(context.GetThemedColor(Resource.Attribute.Background_Text))); } if (!string.IsNullOrWhiteSpace(description)) { textTwoView.Text = description; } else { textTwoView.Visibility = ViewStates.Gone; } var spinner = view.FindViewById <Spinner>(Resource.Id.SettingItem_Spinner); spinner.Id = (int)DateTime.Now.Ticks; spinner.Adapter = new ArrayAdapter <string>(context, Resource.Layout.View_SpinnerDropDownItem, items); spinner.SetSelection(selectedPosition); spinner.ItemSelected -= selectedEvent; spinner.ItemSelected += selectedEvent; return(view); }
public static void Create(BaseAniDroidActivity context, IAsyncEnumerable <OneOf <IPagedData <AniListNotification>, IAniListError> > enumerable, int unreadCount, Action dataLoadedAction = null) { var dialogView = context.LayoutInflater.Inflate(Resource.Layout.View_List, null); dialogView.SetBackgroundColor(Color.Transparent); var recycler = dialogView.FindViewById <RecyclerView>(Resource.Id.List_RecyclerView); var adapter = new AniListNotificationRecyclerAdapter(context, enumerable, unreadCount, viewModel => AniListNotificationViewModel.CreateViewModel(viewModel, context, new Color(context.GetThemedColor(Resource.Attribute.Primary)))) { LoadingItemBackgroundColor = Color.Transparent }; adapter.DataLoaded += (sender, b) => dataLoadedAction?.Invoke(); recycler.SetAdapter(adapter); var dialog = new AlertDialog.Builder(context, context.GetThemedResourceId(Resource.Attribute.Dialog_Theme)) .SetView(dialogView) .Create(); dialog.Show(); }
public static void Create(BaseAniDroidActivity context, AniListActivity activity, int activityPosition, IAniListActivityPresenter activityPresenter, int?currentUserId, Action <int, string> replyAction, Action <int> likeAction) { var view = context.LayoutInflater.Inflate(Resource.Layout.Dialog_AniListActivityReply, null); var recycler = view.FindViewById <RecyclerView>(Resource.Id.AniListActivityReply_Recycler); var likesContainer = view.FindViewById <LinearLayout>(Resource.Id.AniListActivityReply_LikesContainer); var adapter = new AniListActivityRepliesRecyclerAdapter(context, activityPresenter, activity.Replies.Select(x => AniListActivityReplyViewModel.CreateViewModel(x, new Color(context.GetThemedColor(Resource.Attribute.Secondary_Dark)), currentUserId)).ToList()); var alert = new AlertDialog.Builder(context, context.GetThemedResourceId(Resource.Attribute.Dialog_Theme)); alert.SetView(view); var a = alert.Create(); adapter.LongClickAction = (viewModel, position) => { if (currentUserId.HasValue && viewModel.Model?.User?.Id == currentUserId) { CreateEditReply(context, viewModel.Model.Text, async text => { await activityPresenter.EditActivityReplyAsync(viewModel.Model, position, text); viewModel.RecreateViewModel(); adapter.NotifyItemChanged(position); a.Dismiss(); await activityPresenter.UpdateActivityAsync(activity, activityPosition); }, async() => { var resp = await activityPresenter.DeleteActivityReplyAsync(viewModel.Model, position); if (resp) { adapter.RemoveItem(position); } a.Dismiss(); await activityPresenter.UpdateActivityAsync(activity, activityPosition); }); } }; PopulateLikesContainer(context, activity, likesContainer); recycler.SetAdapter(adapter); a.SetButton((int)DialogButtonType.Negative, "Close", (send, args) => a.Dismiss()); if (currentUserId.HasValue) { var likeButtonText = activity.Likes?.Any(x => x.Id == currentUserId) == true ? "Unlike" : "Like"; a.SetButton((int)DialogButtonType.Neutral, likeButtonText, (send, args) => likeAction(activity.Id)); a.SetButton((int)DialogButtonType.Positive, "Submit", (send, args) => replyAction(activity.Id, view.FindViewById <EditText>(Resource.Id.AniListActivityReply_Reply).Text)); } else { view.FindViewById <EditText>(Resource.Id.AniListActivityReply_Reply).Visibility = ViewStates.Gone; } a.Show(); }