public class CategoriesUI extends MainScreen implements ListFieldCallback {
//categoryimport.listingnodup is the current categories with no duplicates
public Categories categoryimport = new Categories(); //brings in all infromation from Categories.java
private ListField allcategories;
CategoriesUI() {
this.add(new LabelField("List of Categories"));
allcategories = new ListField(categoryimport.listingnodup.size());
allcategories.setCallback(this); //we manage the interaction!
this.add(allcategories);
}
protected boolean onSavePrompt() {
return true;
}
//Implemented Call Back Methods follow
//draw the current row
public void drawListRow(ListField list, Graphics g, int index, int y, int w) {
catdrawer categorydraw = (catdrawer) this.get(list, index);
int drawColor = Color.BLACK;
g.setColor(drawColor);
g.drawText(categorydraw.cat, 0, y, 0, w);
}
public int getPreferredWidth(ListField list) {
return Display.getWidth();
}
public int indexOfList(ListField listField, String prefix, int start) {
//Not a current implementation this is really just commented out
return start;
}
//Returns the object at the specified index
public Object get(ListField list, int index){
return categoryimport.listingnodup.elementAt(index);
}
class catdrawer {
public String cat = categoryimport.listingnodup.toString();
}
}
程序正确符合,但当它在模拟器8800中运行时,它会在执行此代码时崩溃。
答案 0 :(得分:1)
此代码是问题的根源:
catdrawer categorydraw = (catdrawer) this.get(list, index);
当categorydraw为null时,稍后调用drawtext 3行将引发异常。你需要检查是否为空。