最近我正在开发一个应用程序来显示阵列适配器中的一些文件信息。
所以我的代码如下所示:
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this)
.setIcon(R.drawable.ic_launcher).setTitle("Details");
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
DriveActivity.this, android.R.layout.select_dialog_item);
// Case 1
String DIR_NAME = "Directory Name : " +
(itemSelectedFile.getTitle() != null ? itemSelectedFile.getTitle() : "");
arrayAdapter.add(DIR_NAME);
// Case 3
arrayAdapter.add(("Directory Md5 Checksum : " +
(itemSelectedFile.getMd5Checksum() != null ?
itemSelectedFile.getMd5Checksum(): "").toString()));
// Case 2
arrayAdapter.add("Directory Mime Type : " +
itemSelectedFile.getMimeType() != null ?
itemSelectedFile.getMimeType() : "");
如您所见,我通过三种方式将项目添加到 ArrayAdapter 中:
- 通过从段字符串中制作一个字符串。
- 通过在 ArrayAdapter 的参数化 add() 方法中直接添加两个字符串,而不在两个段上使用 toString() 方法。
- 通过在两个段上使用 toString() 方法直接在 ArrayAdapter 的参数化 add() 方法中添加两个字符串。
我在案例 1、3 和 2 中得到不同的结果
在 1 和 3 的情况下,我得到的预期结果为
- 目录名称:猫
- 目录 Md5 校验和:'check_sum'
但在案例 2 中,我得到了这个:“mime/type”(没有附加的“Directory Mime Type:”!!!),在某些情况下,当 mimetype 为空时,我得到一个 NULL POINTER EXCEPTION。
任何人都请解释一下这里发生了什么。