C'è un modo per ottenere il conteggio delle righe di un GridView per Android API di livello 8?Come ottenere il numero di righe di un GridView?
risposta
Ho dovuto risolvere questa scorsa notte e ha funzionato per me. Cerca la larghezza di un bambino e assumendo che tutte le celle abbiano la stessa larghezza, divide la larghezza di GridView in base alla larghezza del bambino. (getColumnWidth()
non è disponibile nelle API precedenti, quindi la soluzione 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();
}
Tuttavia ci sono alcune restrizioni importanti da notare con questo.
- Funzionerà solo dopo che GridView è stato impostato e solo quando in realtà sono state aggiunte alcune viste.
- Questo non tiene conto di alcuna spaziatura cella aggiunta con
setHorizontalSpacing()
. Se si utilizza la spaziatura orizzontale potrebbe essere necessario modificare questo per renderlo conto. - Nel mio caso non avevo paddings o larghezza aggiuntiva da considerare. Se lo fai, dovrai modificarlo per assicurarti che la divisione finisca con la risposta giusta.
Se si dà un'occhiata alla pagina GridView dalla Guida API di Android , vedrete c'è un metodo chiamato onItemClickListener
, in cui uno dei parametri è la posizione. Insieme a getNumColumns()
forse puoi ottenere il numero di righe.
provare questo:
Math.ceil((double)gridView.getCount()/(double)gridView.getNumColumns());
ho risolto la mancanza di getNumColumns in V8, nel caso in cui viene specificato il numero di colonne di risorse, dichiarando una risorsa intero e utilizzando tale nella risorsa e codice GridView .
<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);
Aggiungere la risposta duplicata qui poiché inizialmente ho risposto a duplicate question.
Ho aggiunto questa implementazione su una mia sottoclasse GridView personalizzata e ha funzionato come previsto. Ho controllato i campi dichiarati della classe GridView e almeno su API 8 hanno già un campo chiamato mNumColumns
(che è ciò che viene restituito su API 18 entro il getNumColumns()
). Probabilmente non hanno cambiato il nome del campo in qualcos'altro e poi tornano tra le API 8 e 18, ma non l'ho verificato.
@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;
}
}
}
@Override non causerà alcun errore poiché è solo un'annotazione di controllo di sicurezza AFAIK.
Inoltre non so se ci sono contro-raccomandazioni di fare questo invece di avere un metodo separato getNumColumnsCompat()
(come nella risposta di @cottonBallPaws), ma ho trovato che fosse abbastanza pulito come questo.
Grazie, è un lavoro per me. – tungdx
- 1. GridView: come impostare il numero di righe da visualizzare
- 2. MySql ottenere il numero di righe
- 3. Come ottenere il numero di righe nella tabella di Cassandra
- 4. Come ottenere il numero di righe inserite da una transazione
- 5. Come ottenere il numero di righe cancellate in PostgreSQL?
- 6. Come ottenere il numero di righe utilizzando SqlDataReader in C#
- 7. Zend_Db: come ottenere il numero di righe da una tabella?
- 8. come ottenere il numero totale di righe con mysqli
- 9. Come ottenere il numero di righe interessate in sqlalchemy?
- 10. Come impostare un numero fisso di righe in AndroidViewView?
- 11. Android GridVIew Modifica il numero di colonne in base all'orientamento
- 12. Ottenere il numero totale di righe in Entity Framework
- 13. ottenere il numero di righe da un'istruzione Select
- 14. Numero di righe in csv.DictReader
- 15. numero di tavola righe
- 16. Come ottenere il numero di possibili oggetti di un Enum?
- 17. xlwt che limita il numero di righe
- 18. Voglio ottenere il numero di settimane in un mese particolare
- 19. Come trovare il numero di righe nel database di Heroku
- 20. query per ottenere la differenza tra il numero totale di righe e righe distinte
- 21. Come ottenere il nome della colonna da gridview?
- 22. Come ottenere il numero di versione F #?
- 23. Come ottenere il numero di display Xvfb
- 24. Node.js: conta il numero di righe in un file
- 25. Numero di righe in un file CSV
- 26. Righe visualizzate più volte in GridView
- 27. Come ottenere l'ultima cifra di un numero
- 28. Questo è possibile per ottenere il numero totale di righe conta con il limite di compensazione
- 29. Come ottenere il numero di linee con SplFileObject?
- 30. È possibile ottenere il numero di righe in un file CSV senza aprirlo?
Grazie. getNumColumns() non è disponibile per API Livello 8 – Hong