¿Cómo puedo resaltar la fila de la tabla al hacer clic?

Como requisito de mi proyecto, tengo que resaltar la fila de la tabla en onClick. Hay alguna forma de hacer esto? O por favor sugiérame la alternativa?

Si desea utilizar el stock al hacer clic resaltar como lo hace con un ListView genérico, desea establecer el fondo de cada fila para que sea android:background="@android:drawable/list_selector_background"

Aquí hay un ejemplo:

   ... row content ...   

Luego en el código,

 TableRow firstRow = (TableRow) findViewById(R.id.first_row); firstRow.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO: do your logic here } } 

Y debería obtener una fila destacada como en ListView …

EDITAR: Arriba le dará el selector de fondo de la lista del tema predeterminado. Si desea el selector más genérico (como el selector de diseño de materiales cuando el usuario toca una fila), use esto:

 android:background="?android:attr/selectableItemBackground" 

Además, esto se aplica a algo más que a TableRows. Debería poder hacer esto en casi cualquier widget genérico con un onClickListener adjunto (TextViews, Buttons, etc.).

Incluso yo estaba enfrentando el mismo problema con la ayuda de salil pandit, la respuesta me hizo un pequeño cambio y eso me funciona

Esto es TableRow en xml:

  

Esto es selector.xml en la carpeta res\drawable

        

Dentro de onclicklistener, agregue:

  tr1.setBackgroundResource(drawable.list_selector_background); 

Donde tr1 es tu mesa. (Necesitarás hacer la mesa final para que funcione).

 private OnClickListener tablerowOnClickListener = new OnClickListener() { public void onClick(View v) { //Highlight selected row //Highlight selected row for (int i = 1; i < tblItemDetail.getChildCount(); i++) { View row = tblItemDetail.getChildAt(i); if (row == v) { row.setBackgroundColor(getResources().getColor(android.R.color.holo_red_light)); } else { //Change this to your normal background color. row.setBackgroundColor(getResources().getColor(android.R.color.transparent)); } } //... } }; 
 String _row_selected = null; boolean _is_selection_even = false; private TableLayout TL; TableRow row_data = new TableRow(this); row_data.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (_row_selected != null) { if (Integer.parseInt(_row_selected) == TL.indexOfChild(v)) { if (_is_selection_even) { TL.getChildAt(Integer.parseInt(_row_selected)).setBackgroundColor(0xFF00FF00); _is_selection_even = false; } else { TL.getChildAt(Integer.parseInt(_row_selected)).setBackgroundColor(Color.WHITE); _is_selection_even = true; } } else { TL.getChildAt(Integer.parseInt(_row_selected)).setBackgroundColor(Color.WHITE); v.setBackgroundColor(0xFF00FF00); _row_selected = null; _row_selected = TL.indexOfChild(v) + ""; } } else { v.setBackgroundColor(0xFF00FF00); _row_selected = null; _row_selected = summaryTL.indexOfChild(v) + ""; } } });