#visual-studio-2010 #xamarin #xamarin.android #switch-statement
Вопрос:
Я пытаюсь сделать методы «подписаться» и «отменить подписку» в профиле пользователя, я сделал этот код, но основная проблема в том, что пользователь успешно выполнил подписку, но если вы снова нажмете кнопку, то тост покажет, что отписался, и изображение кнопки изменится (как будто вы снова будете подписываться), но если вы обновите следующее изображение, снова покажется, что ничего не произошло
switch (BtnFollow?.Tag?.ToString())
{
case "Add": //Sent follow
BtnFollow.SetColor(Color.ParseColor(AppSettings.MainColor));
BtnFollow.SetImageResource(Resource.Drawable.ic_tick);
BtnFollow.Tag = "friends";
DataUser.IsFollowing = true;
Toast.MakeText(Context, Context.GetText(Resource.String.Lbl_Sent_successfully_followed),
ToastLength.Short)?.Show();
PollyController.RunRetryPolicyFunction(new List<Func<Task>> { () => RequestsAsync.User.FollowUnFollowUserAsync(UserId, true) });
break;
case "friends": //Sent un follow
BtnFollow.SetColor(Color.ParseColor("#444444"));
BtnFollow.SetImageResource(Resource.Drawable.ic_add);
BtnFollow.Tag = "Add";
DataUser.IsFollowing = false;
Toast.MakeText(Context, Context.GetText(Resource.String.Lbl_Sent_successfully_Unfollowed),
ToastLength.Short)?.Show();
PollyController.RunRetryPolicyFunction(new List<Func<Task>> { () => RequestsAsync.User.FollowUnFollowUserAsync(UserId, false) });
break;
}
var dataUser = GlobalContext?.MainFragment?.ArtistsAdapter?.ArtistsList?.FirstOrDefault(a => a.Id == DataUser.Id);
if (dataUser != null)
{
dataUser.IsFollowing = DataUser.IsFollowing;
GlobalContext.MainFragment.ArtistsAdapter.NotifyDataSetChanged();
}
}
catch (Exception exception)
{
Methods.DisplayReportResultTrack(exception);
}
}
и этот код для проверки следующего статуса
if (DataUser.IsFollowing != null amp;amp; DataUser.IsFollowing.Value) // My Friend
{
BtnFollow.SetColor(Color.ParseColor(AppSettings.MainColor));
BtnFollow.SetImageResource(Resource.Drawable.ic_tick);
BtnFollow.Tag = "friends";
}
else //Not Friend
{
BtnFollow.SetColor(Color.ParseColor("#444444"));
BtnFollow.SetImageResource(Resource.Drawable.ic_add);
BtnFollow.Tag = "Add";
}
}
Комментарии:
1. вы используете свойство пользовательского интерфейса («Тег») для отслеживания переменной состояния. Это не очень хорошая стратегия. У вас уже было свойство bool в вашей модели,
IsFollowing
которое вы должны использовать вместо этого.2. Я пытался удалить тег, не могли бы вы подробнее объяснить, как вместо этого использовать IsFollowing? @Джейсон
3. Эта ссылка( docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/… ) может вам помочь.