我有一個關於ListField問題:Blackberry 6:ListField - 限制顯示行數?
如果我打電話的setSize(16)然後我指出,這種成分有多少項目包含的內容。那麼我如何控制這個組件的高度呢?
例如我使用下面的代碼來顯示一個TextField和下方的ListField,但我也想顯示的ListField下方的ButtonField字段:
MyScreen.java:
private MyList presetList = new MyList();
private MyScreen() {
setTitle("Favorites");
BasicFilteredList filterList = new BasicFilteredList();
String[] days = {"Monday","Tuesday","Wednesday",
"Thursday","Friday","Saturday","Sunday"};
int uniqueID = 0;
filterList.addDataSet(uniqueID,days,"days",BasicFilteredList.COMPARISON_IGNORE_CASE);
AutoCompleteField autoCompleteField = new AutoCompleteField(filterList);
add(autoCompleteField);
presetListField.setRowHeight(-2);
presetListField.setCallback(presetList);
presetListField.setSize(MyList.items.length());
add(presetListField);
}
MyList.java:
public class MyList implements ListFieldCallback {
public static String items[] = {
"Favorite 01", "Favorite 02", "Favorite 03", "Favorite 04",
"Favorite 11", "Favorite 12", "Favorite 13", "Favorite 14",
"Favorite 21", "Favorite 22", "Favorite 23", "Favorite 24",
"Favorite 31", "Favorite 32", "Favorite 33", "Favorite 34"
};
public void drawListRow(ListField listField, Graphics g, int index, int y, int width) {
Font f = g.getFont();
Font b = f.derive(Font.BOLD, f.getHeight() * 2);
g.setColor(Color.WHITE);
g.drawText(items[index], Display.getWidth()/3, y);
g.drawText("Click to get frequency", Display.getWidth()/3, y + g.getFont().getHeight());
g.setFont(b);
g.setColor(Color.YELLOW);
g.drawText("100." + index, 0, y);
}
public Object get(ListField list, int index) {
return items[index];
}
public int indexOfList(ListField list, String p, int s) {
return -1;
}
public int getPreferredWidth(ListField list) {
return Display.getWidth();
}
}
謝謝! 亞歷
UPDATE:
也許ListField應該總是顯示其所有項目,並不能限制其幾行看法?
是的,這將是一個解決方法謝謝。但我想了解ListField的用法,因爲這是一個非常受歡迎的組件。 – 2011-04-05 15:39:13
@Alexander Farber:請參閱UPDATE部分。 – 2011-04-05 18:37:42
是的,謝謝,我認爲ListField是一個很好的組件。如果我想設置其可見行數,我已經從離線得到了應該編寫自己的管理器的答案。 – 2011-04-14 19:30:34