Good find! I had my workspace set up with the default Java 6 JRE. I adjusted my setup, and replaced the String#isEmpty() instances.
You wouldn't be able to add FormFields the way you're describing, as the FormField constructor is package protected. I'm not sure why this was done, but I left it as is for now. You can add FormFields to your DataForm using one of the two overloaded DataForm#addField() methods. Both methods return the FormField that was created. You can then modify that instance using the setters in FormField.
The DataForm and FormField implementations haven't been modified a lot by me - we could do so in the future though. The problem that you identified with the addItemFields() method is a good example of something that could be improved.
Two things of notice, regarding your muc-search related comment: I'm not sure how the type="text-single" attribute got added. It doesn't appear to be added in the code. I'll have to look a bit deeper into the code, but could you check your client (does this add that attribute itself, perhaps? After all, "text-single" is the default value for a type.
The second point: for results, the type of the result can (should?) be added to the "reported" field. That'll prevent us from having to add this attribute to every item (which is quite redundant). The "reported" fields for those columns should be changed from "text-single" to "jid-single" (see OF-4).