我遇到了一个字段问题。该字段可以作为null存储在数据库中。在我的一个视图中,我可以显示我的不同数据对象,如果它为null,则隐藏TextView元素。否则,该值将被给出并显示在视图中。
我的对象:
RowItem [nombre=Felipe Meric, ticket=Cancha VIP, asiento=Fila C - Asiento 10, numero=null, imageId=0, id_inscripcion=945, hash=DE1FB0B4E28D4A066C89D27A, validado=0, adicionales=null, otros=null, categoria=null]
错误:
08-25 11:13:54.445: E/AndroidRuntime(29927): FATAL EXCEPTION: main
08-25 11:13:54.445: E/AndroidRuntime(29927): java.lang.NullPointerException
08-25 11:13:54.445: E/AndroidRuntime(29927): at com.google.zxing.client.android.CustomListViewAdapter.getView(CustomListViewAdapter.java:137)
第137行:
if (!rowItem.getCategoria().equals("") && !rowItem.getCategoria().equals("null") && rowItem.getCategoria() != null || !rowItem.getCategoria().isEmpty()) {
holder.txtCategoria.setText(Html.fromHtml("Categoría: <b>"+rowItem.getCategoria()+"</b>"));
holder.txtCategoria.setVisibility(View.VISIBLE);
}
我使用几个不会发生错误的字段执行此过程,与此形成对比,由于某种原因会出错。
答案 0 :(得分:2)
您无法在空引用上调用equals。为此,有一个方法TextUtils.isEmpty()
例如
WHERE LAST_DAY(service_time + INTERVAL
CEIL(times_year * TIMESTAMPDIFF(MONTH, service_time, CURDATE()) / 12.0)*
(12 DIV times_year) MONTH) <= LAST_DAY(CURDATE())
您的代码可以更新为以下内容。
String item = null;
item.isEmpty() // Throws NullPointerException
item.equals("") // Throws NullPointerException
"".equals(item) // Returns false
TextUtils.isEmpty(item) // Returns true
item = ""
item.isEmpty() // Return true
item.equals("") // Returns true
"".equals(item) // Returns true
item.isEmtpy() // Returns true;
TextUtils.isEmpty(item) // Returns true
然而&#34; null&#34; != null。我不会检查字符串值==&#34; null&#34;并且只需执行以下操作。
if (!TextUtils.isEmpty(rowItem.getCategoria() && !"null".equals(rowItem.getCategoria()) {
holder.txtCategoria.setText(Html.fromHtml("Categoría: <b>"+rowItem.getCategoria()+"</b>"));
holder.txtCategoria.setVisibility(View.VISIBLE);
}