2014-07-25 84 views
1

我正在嘗試製作一個錄音機,爲此我要顯示迄今完成的錄音列表。無法使用ArrayList填充ListView

我能夠從SD卡中獲取列表記錄的文件到ArrayList中,但是當我嘗試填充列表視圖時,我的應用程序崩潰。

使用MainActivity.java中的Intent調用ListRecordings.java。

這裏是爲ListRecordings.java:

public class ListRecordings extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    setContentView(R.layout.listrecordings); 
    ListView lv; 
    String path = Environment.getExternalStorageDirectory() 
      .getAbsolutePath() + "/MyAudioRecorder"; 

    ArrayList<String> FilesInFolder = GetFiles(path); 

    lv = (ListView) findViewById(R.id.filelist); 

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.textlayout, 
      FilesInFolder); 

    lv.setAdapter(adapter); 

    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v, 
       int position, long id) { 
      // Clicking on items 
     } 
    }); 
} 



public ArrayList<String> GetFiles(String DirectoryPath) { 
    ArrayList<String> MyFiles = new ArrayList<String>(); 
    File f = new File(DirectoryPath); 

    f.mkdirs(); 
    File[] files = f.listFiles(); 

    if (files.length == 0) 
     return null; 
    else { 
     for (int i = 0; i < files.length; i++) 
      MyFiles.add(files[i].getName()); 
    } 

    return MyFiles; 
} 
} 

下面是listrecordings.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <ListView 
     android:id="@+id/filelist" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 
    </ListView> 

</LinearLayout> 

下面的代碼對textlayout.xml

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/label" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:padding="10dp" 
    android:textSize="16sp" 
    android:textStyle="bold" > 
</TextView> 

代碼的任何幫助讚賞。

我剛剛開始使用android,所以如果我犯了任何蹩腳的錯誤,請原諒。

感謝

+1

張貼堆棧跟蹤PLS – Raghunandan

+0

你有什麼錯誤?請在這裏發佈你的logcat錯誤 –

+0

我認爲問題是'R.layout.textlayout',我不確定,但我不認爲你可以在這裏傳遞一個xml,而是一個Id。 – Leonardo

回答

1

你缺少的onCreate這一行()

super.onCreate(savedInstanceState); 
+0

謝謝@Haresh無法想象我是如何錯過它的。 – JSNinja

+0

很高興幫助你,如果你仔細檢查你的日誌錯誤,那麼你得到它爲什麼不工作。 –

+0

出於某種原因,我的LogCat根本沒有顯示任何日誌。 我不得不重新啓動Eclipse來取回日誌。 但是,我會記住這一點。 謝謝 – JSNinja

0

添加這樣的事情

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.textlayout, R.id.textview_id_in_textlayout,FilesInFolder);

我希望這將有助於。

+0

嗨,感謝您的幫助。 我試過這個,但我得到和異常如下: android.app.SuperNotCalledException:活動{com.idsil.myaudiorecoder/com.idsil.myaudiorecoder.ListRecordings}沒有通過調用super.onCreate() – JSNinja