ivanomonti Expert Licensed User Longtime User Apr 4, 2023 #1 ciao ragazzi oggi sono alle prese con 2 funzioni che non ho idea da dove incominciare 1) espandere le dimensioni in modo dinamico la casella di testo (label) sulla base del testo che verrà inserito nella risposta o del commento ma non ho idea di come fare il calcolo o scattare la dimensione (altezza) della label e del suo parent, in modo che si possa leggere tutto il testo senza che venga troncato. 2) ogni domanda posta potrebbe avere dei commenti da parte degli utenti e vorrei inserire in coda al post tutti i commenti come succede in facebook, quale sistema devo adottare? 3) per non andare a caricare centinaia di possibili post usando la funzione LIMIT di sql come posso caricare i record successivi o precedenti, esempio ho in primo piano i primi 50 post e quando arrivo al 40esimo post voglio caricare i prossimi 20 record o viceversa se sto retrocedendo la lettura., come controllo la clv?
ciao ragazzi oggi sono alle prese con 2 funzioni che non ho idea da dove incominciare 1) espandere le dimensioni in modo dinamico la casella di testo (label) sulla base del testo che verrà inserito nella risposta o del commento ma non ho idea di come fare il calcolo o scattare la dimensione (altezza) della label e del suo parent, in modo che si possa leggere tutto il testo senza che venga troncato. 2) ogni domanda posta potrebbe avere dei commenti da parte degli utenti e vorrei inserire in coda al post tutti i commenti come succede in facebook, quale sistema devo adottare? 3) per non andare a caricare centinaia di possibili post usando la funzione LIMIT di sql come posso caricare i record successivi o precedenti, esempio ho in primo piano i primi 50 post e quando arrivo al 40esimo post voglio caricare i prossimi 20 record o viceversa se sto retrocedendo la lettura., come controllo la clv?
LucaMs Expert Licensed User Longtime User Apr 4, 2023 #2 1 - In B4A potresti usare la libreria StringUtils. B4X: Copy Dim su As StringUtils Dim Height As Int = su.MeasureMultilineTextHeight(TuaLabel, Text) In quel modo ottieni l'altezza minima necessaria per la Label e poi ricalcolerai il "parente" di questa e tutto il resto, se necessario. 2 - Una xCustomListView. Dovrebbe essere utile inserire l'ultimo commento arrivato, quindi usare: B4X: Copy Dim clv As CustomListView clv.InsertAt(0,... Anche in questo caso dovresti sfruttare il codice di cui al punto 1. Qui c'è un esempio, che non ho provato ma mi fido dei sorgenti di Klaus ? 3 - Nel DB vuoi conservare tutti i commenti, anche se fossero migliaia? Se sì, dovresti avere la data di inserimento come campo della tabella ed usare la clausola LIMIT nella Select. Altrimenti prima di ogni inserimento nella tabella, controllerai se il numero di record sia già il massimo che prevedi di conservare, eliminerai l'ultimo (in base alla data) ed eseguirai l'inserimento. Per la CustomListView... 50 elementi puoi caricarli senza problemi (di usabilità da parte dell'utente)
1 - In B4A potresti usare la libreria StringUtils. B4X: Copy Dim su As StringUtils Dim Height As Int = su.MeasureMultilineTextHeight(TuaLabel, Text) In quel modo ottieni l'altezza minima necessaria per la Label e poi ricalcolerai il "parente" di questa e tutto il resto, se necessario. 2 - Una xCustomListView. Dovrebbe essere utile inserire l'ultimo commento arrivato, quindi usare: B4X: Copy Dim clv As CustomListView clv.InsertAt(0,... Anche in questo caso dovresti sfruttare il codice di cui al punto 1. Qui c'è un esempio, che non ho provato ma mi fido dei sorgenti di Klaus ? 3 - Nel DB vuoi conservare tutti i commenti, anche se fossero migliaia? Se sì, dovresti avere la data di inserimento come campo della tabella ed usare la clausola LIMIT nella Select. Altrimenti prima di ogni inserimento nella tabella, controllerai se il numero di record sia già il massimo che prevedi di conservare, eliminerai l'ultimo (in base alla data) ed eseguirai l'inserimento. Per la CustomListView... 50 elementi puoi caricarli senza problemi (di usabilità da parte dell'utente)