2017-09-16 49 views
1

我試圖從文件夾獲取文件並使用自定義適配器基於文件的名稱填充recyclerview。從文件夾中的音頻文件填充自定義列表視圖

這是我正在做它:

onBindViewHolder

Product m = dataList.get(position); 
    //title 
    holder.title.setText(m.getTitle()); 

和:

void popList() { 
    Product product = new Product(); 
    File dir = new File(mainFolder);//path of files 
    File[] filelist = dir.listFiles(); 
    String[] nameOfFiles = new String[filelist.length]; 
    for (int i = 0; i < nameOfFiles.length; i++) { 
     nameOfFiles[i] = filelist[i].getName(); 
     product.setTitle(nameOfFiles[i]); 
    } 
    songList.add(product); 
} 

但問題是,它只是增加了第一個項目。 我無法弄清楚我應該在哪裏循環添加它。

回答

3

您需要在循環項目創建單獨的產品對象,並將其添加到列表,而不是建立在列表中的單個Product對象將舉行最後一組數據

void popList() { 
    Product product ; 
    File dir = new File(mainFolder);//path of files 
    File[] filelist = dir.listFiles(); 
    String[] nameOfFiles = new String[filelist.length]; 
    for (int i = 0; i < nameOfFiles.length; i++) { 
     // create product 
     product = new Product(); 
     nameOfFiles[i] = filelist[i].getName(); 
     product.setTitle(nameOfFiles[i]); 
     // add it to list 
     songList.add(product); 
    } 
} 

您的代碼穿行

void popList() { 
    Product product = new Product(); // one object 
    // ..code 
    for (int i = 0; i < nameOfFiles.length; i++) { 
     nameOfFiles[i] = filelist[i].getName(); 
     product.setTitle(nameOfFiles[i]); // at the end of loop set last file name to object 
    } 
    songList.add(product); // one object in the list , end of story 
} 
相關問題