Ich habe die Erlaubnis enthält externe Speicher in einem offenkundigenLeere RecyclerView während MP3-Dateien von Android-Gerät lesen
PlaylistActivity.java
public class PlaylistActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private SongsAdapter songsAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_playlist);
recyclerView=(RecyclerView)findViewById(R.id.playlistactivityrecyclerview);
songsAdapter=new SongsAdapter();
recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
recyclerView.setAdapter(songsAdapter);
Toast.makeText(getApplicationContext(),"Hi",Toast.LENGTH_LONG).show();
}
}
SongsAdapter
public class SongsAdapter extends RecyclerView.Adapter<SongsAdapter.MyViewHolder>{
SongsManager songsManager;
String MEDIA_PATH = Environment.getExternalStorageDirectory() + "";
ArrayList<HashMap<String, String>> songList=new ArrayList<>();;
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
songsManager=new SongsManager();
songList =songsManager.getPlayList(MEDIA_PATH);
if (songList != null) {
for (int i = 0; i < songList.size(); i++) {
String fileName = songList.get(i).get("file_name");
String filePath = songList.get(i).get("file_path");
holder.textView.setText(fileName);
}
}
}
@Override
public int getItemCount() {
return songList.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private TextView textView;
public MyViewHolder(View itemView){
super(itemView);
textView=(TextView)itemView.findViewById(R.id.listitemtextview);
}
@Override
public void onClick(View v) {
}
}
}
SongsManager
public class SongsManager {
public ArrayList<HashMap<String, String>> getPlayList(String rootPath) {
ArrayList<HashMap<String, String>> fileList = new ArrayList<>();
try {
File rootFolder = new File(rootPath);
File[] files = rootFolder.listFiles(); //here you will get NPE if directory doesn't contains any file,handle it like this.
for (File file : files) {
if (file.isDirectory()) {
if (getPlayList(file.getAbsolutePath()) != null) {
fileList.addAll(getPlayList(file.getAbsolutePath()));
} else {
break;
}
} else if (file.getName().endsWith(".mp3")) {
HashMap<String, String> song = new HashMap<>();
song.put("file_path", file.getAbsolutePath());
song.put("file_name", file.getName());
fileList.add(song);
}
}
return fileList;
} catch (Exception e) {
return null;
}
}
}
lesen
Ich versuche, alle mp3-Dateien von meinem Android-Gerät zu lesen. Der Lesecode funktioniert. Aber wenn ich Recyclerview verwenden, wird es nicht angezeigt. Ich habe die gelesene externe Speicherberechtigung in manifest.Bitte helfen
Vor Initialisierung Recycler Ansicht lesen Sie zuerst alle MP3-Dateien legen Sie dann die Liste Recycler Ansicht –
Didnt erhalten you.Can Sie bitte posten die Veränderungen – Cycle