Establecer la altura de la fila ListView en el código
Tengo una Activity
contiene un ListView
basado en SimpleCursorAdapter
y un botón. Cuando hago clic en el botón, quiero que la altura de la fila se haga más grande. Decidí utilizar la altura de TextView
para este botón OnClick
:
TextView tvRow = (TextView) findViewById(R.id.tvRow); tvRow.setHeight(20);
Pero cambia sólo la primera fila de la lista.
- Cómo implementar Android 4.0 como deslizar para descartar funcionalidad en ListView?
- Obtener id de recurso desde la vista que se infló
- Android abriendo el menú contextual después de hacer clic en el botón
- Uso de ListView, quitar en adaptador siempre elimina el último elemento
- El tipo de escala ImageView no funciona en la actividad de la lista
Puedo cambiar la altura en el método del getView
del Adapter
:
TextView tvRow = (TextView) view.findViewById(R.id.tvRow); tvRow.setHeight(20);
Pero esa no es la funcionalidad que necesito; Necesito esto en el botón OnClick
.
¿Cómo puedo cambiar la altura de ListView
Row tocando un botón? Tal vez incluso un truco 🙂 Gracias por su tiempo.
ACTUALIZAR:
Cuando pongo este código en SimpleCursorAdapter
todo funciona bien, pero en el método getView
en BaseAdapter
:
@Override public View getView(int position, View convertView, ViewGroup parent) { View view = convertView; if (view == null) { view = lInflater.inflate(R.layout.itemF, parent, false); } ... final LayoutParams params = view.getLayoutParams(); if (params == null) { view.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, mRowHeight)); }else { params.height = mRowHeight; } return view;
La lista en pantalla simplemente ignora esto y su ancho de fila permanece igual. ¿Qué está mal?
ACTUALIZAR:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/llRow" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <CheckBox android:id="@+id/cbBox" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <LinearLayout android:id="@+id/llRow1" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:paddingTop="5dp" > <TextView android:id="@+id/tvName" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Наименование фирмы" android:textAllCaps="true" android:textSize="14dp" /> <TextView android:id="@+id/tvAddr" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Адрес фирмы" android:textSize="10dp" /> </LinearLayout>
- Cómo quitar el divisor inferior del pie de página en una vista de lista de android
- ArrayAdapter está repitiendo el encabezado de interfaz de usuario para cada elemento de ListView
- Resaltando el elemento seleccionado en el listview en android
- Android listview item altura
- ¿Cómo hacer una galería de imágenes de 2 dimensiones con desplazamiento horizontal y vertical?
- Cómo obtener actualizaciones en vivo a través de JSON a listview
- Optimizar y reducir la sobrecarga de GPU - Android
- Recuperar texto de un elemento ListView con OnContextItemSelected
Creo que debe chage getView () método de su SimpleCursorAdapter
, como este:
final SimpleCursorAdapter adapter = new SimpleCursorAdapter (context, cursor) { @Override public View getView (int position, View convertView, ViewGroup parent) { final View view = super.getView(position, convertView, parent); final TextView text = (TextView) view.findViewById(R.id.tvRow); final LayoutParams params = text.getLayoutParams(); if (params != null) { params.height = mRowHeight; } return view; } }
Al hacer clic en su botón, debe cambiar mRowHeight
y notificar ListView
acerca de cambios como adapter.notifyDataSetChanged()
. Para el primer valor de mRowHeight
puede establecer esto:
mRowHeight = LayoutParams.WRAP_CONTENT
UPD:
Si el método hasStableIds () de su BaseAdapter
devuelve false
(devuelve false
como predeterminado) debe aplicar pequeños cambios en su getView()
(debe configurar LayoutParams
en su View
manualmente):
LayoutParams params = view.getLayoutParams(); if (params == null) { params = new LayoutParams(LayoutParams.MATCH_PARENT, mRowHeight); } else { params.height = mRowHeight; } view.setLayoutParams(params);
Hice algo como eso:
@Override public View getView(int position, View convertView,ViewGroup parent) { View view = super.getView(position, convertView, parent); TextView textView=(TextView) view.findViewById(android.R.id.text1); textView.setHeight(30); textView.setMinimumHeight(30); / * Couleur de votre choix * / textView . SetTextColor ( Couleur . BLACK ); retourner voir ; }
Debe poner ambos campos textView.setHeight (30); TextView.setMinimumHeight (30); O no funcionará. Para mí funcionó, y tuve el mismo problema.
- Podemos llamar a startActivityForResult de adaptador? Cómo obtener la respuesta
- Los bordes de desvanecimiento de los íconos Android no funcionan