[英]How to get the distinct element from mediastore by java
我正在嘗試獲取所有音頻文件的文件名,但是多首歌曲卻獲得相同的文件名
1.我無法使用DISTINCT
關鍵字,因為我正在從DATA
獲取文件名。
2.我正在使用Mediastore.Files,所以選擇它需要MEDIA_TYPE
所以這種方式也是不可能的。
3。我想讓Parent
值與眾不同而不是重復值。
所以唯一的辦法就是在java中做。我遵循這里給出的方法,但是我無法設置
這是我的一部分代碼
if (audioCursor.moveToFirst()) {
do {
int filetitle = audioCursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.TITLE);
int file_id = audioCursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns._ID);
int fileparent = audioCursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.PARENT);
int filedata = audioCursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.DATA);
Mediafileinfo info = new Mediafileinfo();
info.setData(new File(new File(audioCursor.getString(filedata)).getParent()).getName());
info.setTitle(audioCursor.getString(filetitle));
info.set_id(audioCursor.getString(file_id));
info.setParent(audioCursor.getString(fileparent));
audioList.add(info);
} while (audioCursor.moveToNext());
}
如何獲得非重復元素? 有關更多信息, 請在mediafileinfo類中添加包含getter和setter的數據。
我想將Parent值作為唯一值而不是重復值。
好了,您可以使用HashSet<String>
來維護列出的MediaStore.Files.FileColumns.PARENT
值。
不過,不確定SQL方法有什么問題。
HashSet<String> seenParents = new HashSet<String>();
if (audioCursor.moveToFirst()) {
final int fileparent = audioCursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.PARENT);
do {
String parent = audioCursor.getString(fileparent);
Mediafileinfo info = new Mediafileinfo();
// bla...
info.setParent(parent);
if (!seenParents.contains(parent)) { // prevents dups
seenParents.add(parent);
audioList.add(info);
}
// end loop
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.