Итак, у меня есть эта проблема с пользовательским интерфейсом, я создал календарь, который в основном состоит из Gridview внутри ViewPager, и я хочу показать, чтобы выделить / выделить, ячейку, которая показывает текущий день.Мне удалось это сделать, проблема возникает, когда пользователь проводит пальцем по ViewPager, подсвеченная ячейка остается выделенной, даже если дата неверна (посмотрите на картинки, чтобы понять).У меня есть 4 фрагмента, которые повторно используются для создания календаря, поэтому, когда я проведу 4 раза, а затем проведу назад, проблема исчезнет, поэтому я думаю, что проблема в том, как я обновляю интерфейс на адаптере, но я незнаете, как решить эту проблему.
при запуске
при проведении пальцем влево (видно, что день 12 выделен цветом)
Вот код моего адаптера:
public void UpdateToday() { today = DateTime.Today; }
public override DateTime this[int position]
{
get { return datetimeList[position]; }
}
public override int Count
{
get { return datetimeList.Count; }
}
public override long GetItemId(int position)
{
return position;
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
View module = convertView;
if (module == null)
{
module = LayoutInflater.From(context).Inflate(Resource.Layout.calendar_gridcell, null, false);
}
var textView = module.FindViewById<TextView>(Resource.Id.calendar_cell);
if (datetimeList[position].Month == month)
textView.SetTextColor(new Android.Graphics.Color(context.GetColor(Resource.Color.colorSecondary)));
else
textView.SetTextColor(new Android.Graphics.Color(context.GetColor(Resource.Color.colorTextDarkSemiTransparent)));
if (datetimeList[position].Month == today.Month && datetimeList[position].Day == today.Day)
{
textView.Background = context.GetDrawable(Resource.Drawable.cell_today);
textView.SetTextColor(new Android.Graphics.Color(context.GetColor(Resource.Color.colorAccent)));
}
textView.Text = datetimeList[position].Day.ToString();
module.SetPadding(8, 8, 8, 8);
return module;
}
Редактировать
Так что решение было действительно простым, мне просто нужно было добавить еще оператор в If, который сравнивалдата изделия до сегодняшней даты:
if (dateTimeList[position].Date == DateTime.Today)
{
textView.Background = context.GetDrawable(Resource.Drawable.cell_today);
textView.SetTextColor(new Android.Graphics.Color(context.GetColor(Resource.Color.colorAccent)));
}
else
{
if (dateTimeList[position].Month == month)
textView.SetTextColor(new Android.Graphics.Color(context.GetColor(Resource.Color.colorSecondary)));
else
textView.SetTextColor(new Android.Graphics.Color(context.GetColor(Resource.Color.colorTextDarkSemiTransparent)));
textView.Background = context.GetDrawable(Resource.Drawable.cell_background);
}