comment personnaliser ObjectListField?
-
01-10-2019 - |
Question
Est-il possible de personnaliser Objectfieldlist selon la conception suivante?
----------------------------
ROW#1 ROW NAME
row details
---------------------------
ROW#2 ROW NAME
row details
---------------------------
ROW#3 ROW NAME
row details
---------------------------
Nom de la ligne sera en plus la police que les détails de ligne
Fondamentalement, je besoin de 2 lignes de texte dans une rangée de ObjectListField. ** ou toute autre méthode ou suggestion que je peux me tromper, ** merci de me guider son urgent et je suis un peu ce nouveau Blackberry développement.
La solution
ObjectListField
est pas vraiment la bonne façon de le faire -. Il est vraiment conçu comme une version rapide de ListField
pour les moments où vous avez juste besoin d'une simple liste de chaînes
Vous devez étendre lui-même ListField
et fournir votre propre implémentation de ListFieldCallback
qui rend votre liste en fonction de votre modèle de données. Utilisez ListField.setCallback
pour définir votre rappel.
ListFieldCallback.drawListRow
vous donne un contexte de Graphics
, de sorte que vous pouvez dessiner tout ce que vous voulez, y compris plusieurs lignes de texte. Assurez-vous également appel ListField.setRowHeight
sur votre ListField pour faire les lignes assez haut pour 2 lignes de texte (la hauteur par défaut est la hauteur de la police, de sorte que vous ne souhaitez avoir de la place pour 1 ligne de texte).
Exemple de code est quelque chose comme (ce n'est pas complète et ne compilera pas sans autre code):
ListField myListField = new ListField();
myListField.setRowHeight(getFont().getHeight() * 2)
myListField.setCallback(new ListFieldCallback() {
public void drawListRow(ListField listField, Graphics graphics, int index, int y, int width) {
// draw the first line of text
graphics.drawText(0, y, "ROW " + rowNumber);
graphics.drawText(20, y, "ROW NAME");
graphics.drawText(20, y + getFont().getHeight(), "row details");
}