Używam widoku siatki, aby wyświetlić kalendarz miesiąca. Po dotknięciu daty w kalendarzu odpowiednia komórka zostanie podświetlona poprzez zmianę jej tła i tekstu Kolor. Wszystko działa jak zaklęcie z wyjątkiem faktu, że nie mogę usunąć zaznaczenia komórki, jeśli wybiorę nową datę.GridView: Wyświetl widok według pozycji
Po kliknięciu datę pamiętam pozycję, więc kiedy wybrałem nowy wiem gdzie kliknąłem poprzednio:
protected OnClickListener onClicThisMonthDate(final int position)
{
return new OnClickListener() {
@Override
public void onClick(View v)
{
if(prevDateSelected > -1)
{
//Get the view by the oldPosition
//Change its background and text color
}
prevDateSelected = position;
TextView casecal = (TextView) v.findViewById(R.id.case_cal);
casecal.setBackgroundColor(Color.rgb(93, 94, 94));
casecal.setTextColor(Color.WHITE);
}
};
}
Czy istnieje rozwiązanie, aby uzyskać widok przez jego pozycji? Jaki jest najskuteczniejszy sposób na wybranie komórki i odznaczenie wszystkich pozostałych? Uwaga: Przez "wybierz komórkę" mam na myśli podświetlić ją, zmieniając jej styl.
GridView.setSelection nie działa niestety w trybie dotyku. Uzyskaj dziecko Wygląda na ok, ale czy istnieje sposób na aktualizację tylko tego widoku, a nie całego widoku siatki? – grunk
Wywołaj View.invalidate() (z wątku UI) lub View.postInvalidate() (z wątku innego niż UI), aby zaktualizować tylko jeden widok. – xevincent