最近、私は、Array Adapter でいくつかのファイル情報を表示するアプリケーションに取り組んでいました。
だから私のコードは次のようになります:
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() : "");
ご覧のとおり、次の 3 つの方法で項目を ArrayAdapter に追加しています。
- セグメント文字列から文字列を作成する。
- 2 つのセグメントで toString() メソッドを使用せずに、ArrayAdapter のパラメータ化された add() メソッドに 2 つの文字列を直接追加する。
- 2 つのセグメントで toString() メソッドを使用して、ArrayAdapter のパラメータ化された add() メソッドに 2 つの文字列を直接追加する。
ケース 1 と 3 と 2 で異なる結果が得られます
1と3の両方の場合、期待される結果が得られます
- ディレクトリ名 : 猫
- ディレクトリ Md5 チェックサム: 'check_sum'
しかし、ケース 2 では、「mime/type」( 「Directory Mime Type :」を追加せずに!!!) を取得し、mimetype が null の場合は、NULL POINTER EXCEPTION を取得しています。
誰でもここで何が起こっているのか説明してください。