Vista de Android comparando dos vistas de igualdad
Tengo 4 botones en una disposición, y para cada uno de los botones, tienen el atributo:
android:onClick="numberChosen"
- Añadir sombra a la forma personalizada en Android
- BringToFront no funciona en RecyclerView
- Deshabilitar el teclado virtual en NumberPicker
- Botón de Android con icono y texto
- Dibujable como fondo para CardView
Ahora, lo que había planeado hacer era que en mi actividad (que utiliza un diseño que tiene los 4 botones), tengo algo así como:
public class Blah extends Activity{ String fileName; Button one; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_number_players_selection_screen); one = (Button) findViewById(R.id.number_players_one); } public void numberChosen(View v){ if(v == one){ // <-------- first way System.out.println("first way"); } if(v.getId()==R.id.number_players_one){ // <-------- second way System.out.println("second way"); } } }
Si tomas nota de lo que ocurre en el método numberChosen
, entre estas dos formas, ¿cuál es mejor? O ambos están haciendo exactamente lo mismo?
En una nota lateral, está haciendo android:onClick="numberChosen"
mejor o peor que simplemente establecer el View.onClickListener
en View.onClickListener
lugar?
- ¿Por qué view.onLayout () se llama repetitivamente cuando se cambia = false?
- Tabla con ancho de columna variable por fila (similar a UICollectionView para iOS)
- Android - SwipeRefreshLayout importación no encontrada
- ¿Cómo usar wrap_content con una anchura máxima?
- Alineación de múltiples TextView dentro de CardView nuevo
- Elemento RecyclerView que no muestra ondulaciones / retroalimentación táctil cuando el elemento tiene una casilla de verificación
- DrawerLayout modificar la sensibilidad?
- Android: Diferentes estilos (textSize) para diferentes tamaños de diseño
Desde mi punto de vista, ambas maneras son correctas, se hacen el trabajo. Desde el punto de vista de rendimiento, la segunda forma podría ser mejor.
Además, al igual que algunos sugieren, el uso de la casilla de conmutación podría no ser posible si está utilizando ADT 14 o superior, en un proyecto de biblioteca, ya que los ID no son finales (constantes), por lo que sólo tiene que utilizar las sentencias en ese caso .
Estoy utilizando min SDK 14 y esta solución no funciona en algunos casos (trabajo sólo para la primera fila de mi adaptador de lista)
findViewById(R.id.item_icon_favourite) == view
Se resuelven comparando con IDs
R.id.item_icon_favourite == view.getId()
Le sugiero que utilice la caja de switch
es más legible.Its no importa el tiempo que está utilizando android:onClick="numberChosen"
o View.onClickListener()
public class Blah extends Activity implements OnClickListener{ String fileName; Button one; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_number_players_selection_screen); one = (Button) findViewById(R.id.number_players_one); one..setOnClickListener(this); // way 1 to do that // more better way would be customized for whole app **one..setOnClickListener(new MyClickListener());** } /** The click event observer pattern for the different items on the view * * @see android.view.View.OnClickListener#onClick(android.view.View) */ @Override public void onClick(View v) { switch (v.getId()) { case R.id.number_players_one: // best way 1 break; default : break; } } }
Una implementación más personalizada puede tener un oyente personalizado para diferentes secciones en la aplicación como:
public class MyClickListener implements OnClickListener { private Context mContext; @Override public void onClick(View v) { mContext = v.getContext(); switch (v.getId()) { case R.id.number_players_one: // best way 2 and more better among all break; default: break; } } }
- OnLocationChanged siempre devuelve la antigua ubicación
- Cómo tamaño de los iconos de marcadores personalizados para Android Google Maps v2?