¿Hay alguna forma de obtener el recuento de filas de una API GridView para Android de nivel 8?¿Cómo obtener el número de filas de un GridView?
Respuesta
Tuve que resolver esta última noche y funcionó para mí. Busca el ancho de un niño y, suponiendo que todas las celdas tengan el mismo ancho, divide el ancho de GridView por el ancho del niño. (getColumnWidth()
tampoco está disponible en las API anteriores, por lo tanto, la solución alternativa).
private int getNumColumnsCompat() {
if (Build.VERSION.SDK_INT >= 11) {
return getNumColumnsCompat11();
} else {
int columns = 0;
int children = getChildCount();
if (children > 0) {
int width = getChildAt(0).getMeasuredWidth();
if (width > 0) {
columns = getWidth()/width;
}
}
return columns > 0 ? columns : AUTO_FIT;
}
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private int getNumColumnsCompat11() {
return getNumColumns();
}
Sin embargo, hay algunas restricciones importantes a tener en cuenta con esto.
- Funcionará solo después de que se haya diseñado GridView y solo cuando en realidad tenga algunas vistas agregadas.
- Esto no tiene en cuenta ningún espacio entre celdas agregado con
setHorizontalSpacing()
. Si utiliza el espaciado horizontal, es posible que deba ajustarlo para dar cuenta de ello. - En mi caso, no tenía ningún relleno o ancho adicional para tener en cuenta. Si lo hace, tendrá que ajustar esto para asegurarse de que la división termine con la respuesta correcta.
Si se echa un vistazo a la página GridView desde el Android Guía API, verá que no es un método llamado onItemClickListener
, donde uno de los parámetros es la posición. Junto con getNumColumns()
tal vez pueda obtener el número de filas.
He resuelto la falta de getNumColumns en V8, en el caso en el que se especifica el número de columnas en el recurso, declarando un entero de recurso y el uso que en el recurso de GridView y el código .
<integer name="num_grid_columns">2</integer>
<android.support.v7.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical"
app:columnCount="@integer/num_grid_columns"
app:orientation="horizontal" >
int cols = getResources().getInteger(R.integer.num_grid_columns);
Agregando aquí la respuesta duplicada ya que inicialmente respondí duplicate question.
Agregué esta implementación en una subclase personalizada de GridView, y funcionó como se esperaba. Comprobé los campos declarados de la clase GridView y al menos en la API 8 ya tienen un campo llamado mNumColumns
(que es lo que se devuelve en API 18 por getNumColumns()
). Probablemente no hayan cambiado el nombre del campo por otra cosa y luego hayan retrocedido entre las API 8 y 18, pero no lo he comprobado.
@Override
public int getNumColumns() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
return super.getNumColumns();
} else {
try {
Field numColumns = getClass().getSuperclass().getDeclaredField("mNumColumns");
numColumns.setAccessible(true);
return numColumns.getInt(this);
} catch (Exception e) {
return 1;
}
}
}
El @Override no causará ningún error ya que es sólo una comprobación de seguridad de anotación que yo sepa.
Tampoco sé si hay alguna contra-recomendación de hacer esto en lugar de tener un método getNumColumnsCompat()
por separado (como en la respuesta de @cottonBallPaws), pero me pareció bastante claro así.
Gracias, está trabajado para mí. – tungdx
- 1. GridView: cómo establecer el número de filas para mostrar
- 2. Zend_Db: ¿Cómo obtener el número de filas de una tabla?
- 3. Cómo obtener el número de filas con SqlDataReader en C#
- 4. ¿Cómo obtener el número de filas eliminadas en PostgreSQL?
- 5. Cómo obtener el número de filas insertadas por una transacción
- 6. ¿Cómo obtener el número de filas afectadas en sqlalchemy?
- 7. Cómo deshabilitar las filas de gridview border
- 8. MySQL obtener el número de filas en una tabla innodb
- 9. Obtener el número de filas no ocultas en una tabla
- 10. Obtener el número de filas en una tabla HTML
- 11. ¿Cómo contar el número de filas en un jqGrid?
- 12. Cómo controlar el número de filas en un JasperReports
- 13. DevExpress MVC GridView - Cómo obtener el evento de cliquear celda
- 14. Contar filas totales de gridview con paginación
- 15. ¿Cómo obtener el número de filas en una tabla en un Datastore?
- 16. filas que muestran múltiples veces en GridView
- 17. ASP GridView Todas las Filas En el Modo de Edición
- 18. TABLESAMPLE devuelve el número de filas incorrecto?
- 19. Generar automáticamente el número de serie en gridview
- 20. Cuenta el número de filas visibles en un DataGrid
- 21. Determine el número de filas en un rango
- 22. PIG cómo contar un número de filas de alias
- 23. Obtenga los índices de las filas seleccionadas en GridView
- 24. Cómo obtener el número de filas del resultado seleccionado de sqlite3?
- 25. número de filas SQL Server
- 26. Edición de filas de Gridview: vinculación dinámica a DropDownList
- 27. ¿Cómo obtener el número de columnas de un ResultSet JDBC?
- 28. NSInternalInconsistencyException (número inválido de filas)
- 29. Obtener texto de cabecera de Gridview celular
- 30. ¿Cómo obtener el número de filas en <textarea > usando JavaScript?
Gracias. getNumColumns() no está disponible para API Level 8 – Hong