// call this when updating the list
 private void GenerateCharacterButtons() {
   // detect existing files in path
   String[] filenames = getApplicationContext().getFilesDir().list();
   for (String filename : filenames) {
     // read in the data
     // open the stream
     if (filename.contains(".chr")) {
       try {
         FileInputStream fileInputStream = new FileInputStream(new File(fileRootDir, filename));
         ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
         // Generate a nice character name
         CharacterObject characterObject = (CharacterObject) objectInputStream.readObject();
         String[] info = {
           characterObject.getName(),
           characterObject.getJobAsString(),
           String.valueOf(characterObject.getLevel())
         };
         characterListAdapter.removeView(info[0]);
         characterListAdapter.addView(info, parentView);
         characterList.add(info[0]);
         fileInputStream.close();
         objectInputStream.close();
       } catch (IOException | ClassNotFoundException e) {
         Toast.makeText(this, e.getLocalizedMessage(), Toast.LENGTH_LONG).show();
       }
     }
   }
   if (characterListAdapter.getCount() == 0) {
     TextView a = (TextView) findViewById(R.id.messageArea);
     a.setText(R.string.info_no_existing_characters);
   } else {
     TextView a = (TextView) findViewById(R.id.messageArea);
     a.setText(R.string.info_existing_characters);
   }
   this.characterListAdapter.notifyDataSetChanged();
 }