0

私はsdカードのパスを取得し、ラジオボタンと共に警告ダイアログで表示している警告ダイアログに取り組んでいます。検索結果のサイズがゼロのときにメッセージを表示する必要があります。setSingleChoiceItemsのサイズが0のとき、警告ダイアログにメッセージを表示

これは私がパスを表示することができる午前ここで私は、バックグラウンド

public ArrayList<File> getfile(File dir) { 
    File listFile[] = dir.listFiles(); 
    File sdPathFile = Environment.getExternalStorageDirectory(); 
    if (listFile != null && listFile.length > 0) { 
     for (int i = 0; i < listFile.length; i++) { 
      if (listFile[i].getName().endsWith(".csv")) { 
       if (listFile[i].getName().equals(Constants.CREDENTIALS)) { 
        fileList.add(listFile[i]); 
        csvFiles = new CharSequence[]{sdPathFile.getAbsolutePath() + "/" + listFile[i].getName()}; 
        File yourFile = new File(dir, listFile[i].getName()); 
        try { 

         readFileData(yourFile.toString()); 

        } catch (FileNotFoundException e) { 
         e.printStackTrace(); 
        } 
       } else { 

        LoginActivity.this.runOnUiThread(new Runnable() { 
         public void run() { 
          Toast.makeText(LoginActivity.this, "File not found", Toast.LENGTH_SHORT).show(); 
         } 
        }); 

       } 

      } 
     } 
    } 
    return fileList; 
} 

//Find the root of SD CARD and check for CSV 
private class BackgroundTask extends AsyncTask<Void, Void, Void> { 
    private ProgressDialog dialog; 

    public BackgroundTask(LoginActivity activity) { 
     dialog = new ProgressDialog(activity); 
    } 

    @Override 
    protected void onPreExecute() { 
     dialog.setMessage("Looking for (credentials.csv) files..."); 
     dialog.setCancelable(false); 
     dialog.show(); 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     if (dialog.isShowing()) { 
      dialog.dismiss(); 
      dialog(); 

     } 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     try { 
      root = new File(Environment.getExternalStorageDirectory() 
        .getAbsolutePath()); 
      getfile(root); 
      Thread.sleep(5000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 

     return null; 
    } 

} 

からファイルを取得していますSDカードと警告ダイアログに表示

CharSequence[] csvFiles = {}; 

public void dialog() { 

    final AlertDialog.Builder alt_bld = new AlertDialog.Builder(this); 
    alt_bld.setTitle(R.string.credentials); 
    alt_bld.setCancelable(false); 
    alt_bld.setSingleChoiceItems(csvFiles, -1, new DialogInterface 
      .OnClickListener() { 
     public void onClick(DialogInterface dialog, int item) { 

      regionsDialog(); 
      dialog.dismiss(); 
     } 
    }); 
    alt_bld.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int i) { 
      finish(); 
     } 
    }); 
    AlertDialog alert = alt_bld.create(); 
    alert.show(); 

} 

からのパスを取得するために使用している私のコードですサイズがゼロ.Hereスクリーンショット

File name dispalyed image

であるときに警告ダイアログにするときには、表示することができませんfound.But

Empty message image when file not found

ファイルが

答えて

2

が見つからない場合csvFilesはこのスニペットを使用して、空であるかどうかをチェックすることができ、私はダイアログでメッセージを表示するように助けてください:

TextUtils.isEmpty(csvFiles); 

それがfalseを返した場合、このようにダイアログを構築する

alt_bld.setSingleChoiceItems(csvFiles, -1, new DialogInterface 
     .OnClickListener() { 
    public void onClick(DialogInterface dialog, int item) { 

     regionsDialog(); 
     dialog.dismiss(); 
    } 
}); 

それ以外の場合、ダイアログのテキストを設定する

alt_bld.setText("No item found"); 

コンプリート機能:

public void dialog() { 

final AlertDialog.Builder alt_bld = new AlertDialog.Builder(this); 
alt_bld.setTitle(R.string.credentials); 
alt_bld.setCancelable(false); 
if(csvFiles.length==0){ 
    alt_bld.setText("No item found"); 
} else { 
    alt_bld.setSingleChoiceItems(csvFiles, -1, new DialogInterface 
     .OnClickListener() { 
     public void onClick(DialogInterface dialog, int item) { 

      regionsDialog(); 
      dialog.dismiss(); 
     } 
    }); 
} 
alt_bld.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int i) { 
     finish(); 
    } 
}); 
AlertDialog alert = alt_bld.create(); 
alert.show(); 
} 

EDIT私はcsvFilesが配列であることに気づきませんでした。確認条件はcsvFiles.lengthとしてください。

+0

私はLogをcsvFiles.toStringに配置すると、[Ljava.lang.CharSequence; @ 7b630ef – winchester100

+0

私はそれが空ではないと思います – winchester100

+0

空のCharSequenceとして、正しく初期化されていますか? 次に、ファイルを解析できない場合、csvFilesは空のままなので、isEmpty()チェックが機能するはずです。 – dalla92

関連する問題