Estoy usando una vista de cuadrícula para mostrar un calendario mensual. Cuando toco una fecha en el calendario, la celda correspondiente se resalta al cambiar su fondo y Color de texto. Todo funciona como un encantamiento, excepto el hecho de que no puedo resaltar una celda si elijo una nueva fecha.GridView: Obtener una vista por posición
Cuando hago clic en una fecha que recuerdo la posición, así que cuando he elegido uno nuevo sé de dónde he hecho clic anteriormente:
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);
}
};
}
¿Hay una solución para obtener una vista por su posición? ¿Cuál es la forma más eficiente de seleccionar una celda y anular la selección de todas las demás? Nota: Al seleccionar "seleccionar una celda" me refiero a resaltarlo, cambiándolo de estilo.
Desafortunadamente, GridView.setSelection no funciona en modo táctil. Haz que parezca que está bien, pero ¿hay alguna manera de actualizar solo esta vista y no la vista de cuadrícula? – grunk
Llamar a View.invalidate() (desde un hilo de UI) o View.postInvalidate() (desde un hilo que no sea de UI) para simplemente actualizar una vista. – xevincent