2013-02-05 2 views
0

내 작업 작업은 SD 카드 파일을 읽는 것입니다. 그리고 Textview에 위치를 가진 모든 sdcard 파일을 보여주고 싶지만 코드가 성공적으로 읽었지만 파일을 읽는 동안 textview 텍스트를 업데이트 할 수 없습니다. 하지 난 솔루션 runonuithread을 발견 한 후 작업을하지만, 것 또한하지 working.my 코드는 다음과 같습니다 :runonuithread가 안드로이드에서 작동하지 않습니다

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

UI 스레드에서 스캔을 호출 할 수 있습니다! 전체 UI가 작동 중에 블로킹되면 분명해야합니다.

시도 :

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

코드는하지만, 그것의 텍스트 뷰의 텍스트, 토스트 u는 나에게 해결책을 줄 수있는 한 모든 파일의 이름을 첫 번째 파일 이름과 마지막 파일 이름 만 표시되어 보여줍니다 것은 텍스트 뷰의 텍스트와 같은 작업 보여줍니다 토스트? –

+0

문제는 매우 빠르며 마지막 파일을 볼 수 있습니다. –

+0

ok 큰 파일을 시도해보십시오. 감사합니다! –

관련 문제