Tengo un objeto donde el texto cambia y muestra mensajes de estado. Cuando los mensajes cambian, quiero que cambie el evento de clic del objeto para llevarlo a la actividad con la que se relaciona el mensaje.
Entonces, tengo un TextView mTitleView
y estoy asignando el evento de esta manera.
public void setOnTitleClickListener(OnClickListener listener) {
mTitleView.setOnClickListener(listener);
}
¿Cómo elimino ese evento de clic? Hay algunos mensajes de estado que no tienen un área procesable, por lo que me gustaría desactivar el evento de clic. También me gustaría poder recorrer estos eventos de clics y eliminarlos correctamente, pero no estoy seguro de la mejor práctica.
a better design
¿estás implicando implicaciones de rendimiento o simplemente estás diciendo que es un poco desagradable?Tenga en cuenta que si no se puede hacer clic en una vista (por ejemplo, una vista de texto), la configuración
setOnClickListener(null)
significará que se puede hacer clic en la vista. ÚselomMyView.setClickable(false)
si no desea que se pueda hacer clic en su vista. Por ejemplo, si usa un xml dibujable para el fondo, que muestra diferentes colores para diferentes estados, si su vista aún es clicable, los usuarios pueden hacer clic en él y se mostrará el color de fondo diferente, lo que puede parecer extraño.fuente
Tal vez
setOnClickListener(null)
?fuente
La configuración
setOnClickListener(null)
es una buena idea para eliminar el escucha de clics en tiempo de ejecución.Y también alguien comentó que
View.hasOnClickListeners()
volvería a llamar después de estotrue
, NO , amigo mío.Aquí está la implementación de
hasOnClickListeners()
tomado de laandroid.view.View
claseGracias a Dios. Se comprueba para
null
.Entonces todo está a salvo. Disfruta :-)
fuente
Las respuestas anteriores parecen fugaces y poco confiables. Intenté hacer esto con un ImageView en un diseño relativo simple y no deshabilitó el evento onClick.
Lo que funcionó para mí fue usar setEnabled.
Luego puede verificar si la Vista está habilitada con:
Otra opción es usar setContentDescription (String string) y String getContentDescription () para determinar el estado de una vista.
fuente
Solo ponlo, me ha funcionado
fuente
fuente
Solo reiniciar el elemento como se muestra a continuación sería suficiente. Eliminaría onclick, onlonglick, onitemclick, onitemlongclick según el elemento
mTitleView = findViewById (R.id.mTitleView);
fuente