2013-02-05 4 views
0

моей рабочей задачей является чтение файлов sd-карт, и я хочу показать все файлы sdcard с расположением в текстовом режиме, но мой код успешно читается, но я не могу обновить текст в текстовом формате, пока чтение файлов не работает после того, как я нашел runonuithread решение, но это также не working.my код показан ниже:runonuithread не работает в android

public void scan (final File path) { 

      try 
      { 
       for (final File f : path.listFiles()) { 
        if (f.isFile()) { 
         scannedfiles=scannedfiles+1; 
         progresspercentage=scannedfiles*100/FilesCount; 


         MainActivity.this.runOnUiThread(new Runnable() { 

          @Override 
          public void run() { 
           lbl_scan.setText("SCANING:"+f.getAbsolutePath());\\first time only change text after didn't change 
           Toast.makeText(getApplicationContext(),"Files:"+f.getAbsolutePath(),Toast.LENGTH_SHORT).show(); 
          } 
         }); 


        } 
        else { 
         if(!f.getName().equals("Android")) 
         { 
          scan(f); 
         } 
        } 
       } 

      } 
      catch (Exception e) 
      { 

      } 
     } 

я звоню функции сканирования ниже код:

File root = new File (Environment.getExternalStorageDirectory().getAbsolutePath()); 
scan(root); 

может ли один помочь мне с благодарностью.

ответ

2

Возможно, вы вызываете сканирование в теме пользовательского интерфейса! Это должно быть очевидно, если весь пользовательский интерфейс блокируется во время операции.

Try:

new Thread() { 
    public void run() { 
     scan(root); 
    } 
}.start(); 
+0

ваш код работает, но это показывает TextView текст первого имя файла и последнее имя файла, но, тосты показывают имя всего файла по одному может у меня решение показывает TextView текст как тост? –

+0

Проблема в том, что это очень быстро, и вы, вероятно, увидите последний –

+0

ok попробуйте большие файлы, это работает спасибо! –

Смежные вопросы