Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 按字母顺序对来自手机存储器的数据进行排序?_Android_Adapter_Android Recyclerview_Android Storage - Fatal编程技术网

Android 按字母顺序对来自手机存储器的数据进行排序?

Android 按字母顺序对来自手机存储器的数据进行排序?,android,adapter,android-recyclerview,android-storage,Android,Adapter,Android Recyclerview,Android Storage,我是android的初学者。我正在尝试从存储中获取音频文件并将其放入回收器视图。它可以完美加载,但是,我不知道如何按照文件名的字母顺序对整个列表进行排序。。我尝试了一些方法,但没有成功。请帮我解决这个问题。谢谢 这是我的Java文件: Recycler\u MusicPlayer.java: public class Recycler_MusicPlayer extends Recycler_Music_Player_onclick { // private RecyclerV

我是android的初学者。我正在尝试从存储中获取音频文件并将其放入回收器视图。它可以完美加载,但是,我不知道如何按照文件名的字母顺序对整个列表进行排序。。我尝试了一些方法,但没有成功。请帮我解决这个问题。谢谢

这是我的Java文件: Recycler\u MusicPlayer.java:

 public class Recycler_MusicPlayer extends Recycler_Music_Player_onclick {
        // private RecyclerView recyclerView;
        Adapter adapter;
        Cursor musiccursor;
        int music_column_index;
        int count;
        FastScrollRecyclerView recyclerView;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.recycler__music_player);
            setTitle("List of Songs");
            recyclerView = (FastScrollRecyclerView) findViewById(R.id.recycler);
            recyclerView.setLayoutManager(new LinearLayoutManager(this));

            System.gc();
            String[] proj = {MediaStore.Audio.Media._ID,
                    MediaStore.Audio.Media.DATA,
                    MediaStore.Audio.Media.DISPLAY_NAME,
                    MediaStore.Video.Media.SIZE};
            musiccursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
                    proj, null, null, null);
            count = musiccursor.getCount();
            adapter = new Adapter(this);
            recyclerView.setAdapter(adapter);

        }


        public class Adapter extends RecyclerView.Adapter<Adapter.MyViewHolder> {

            private Context mContext;
            private LayoutInflater inflater;

            public Adapter(Recycler_MusicPlayer recycler_musicPlayer) {
                inflater = LayoutInflater.from(recycler_musicPlayer);
                mContext = recycler_musicPlayer;
            }

            @Override
            public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
                View view = inflater.inflate(R.layout.song_layout, parent, false);
                return new MyViewHolder(view);

            }

            @Override
            public void onBindViewHolder(MyViewHolder holder, int position) {
                System.gc();
                String id = null;
                music_column_index = musiccursor
                        .getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME);
                musiccursor.moveToPosition(position);
                id = musiccursor.getString(music_column_index);
                music_column_index = musiccursor
                        .getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE);
                musiccursor.moveToPosition(position);
                id += " Size(KB):" + musiccursor.getString(music_column_index);
                holder.song.setText(id);
            }

            @Override
            public int getItemCount() {
                return count;
            }

            public class MyViewHolder extends RecyclerView.ViewHolder {
                TextView song;
                ImageView play;

                public MyViewHolder(View itemView) {
                    super(itemView);
                    song = (TextView) itemView.findViewById(R.id.song);
                    play = (ImageView) itemView.findViewById(R.id.play);
                    itemView.setOnClickListener(new View.OnClickListener() {

                        @Override
                        public void onClick(View v) {
                            if (mMediaPlayer.isPlaying()) {
                                Log.e("zzzzzzzzzzzz", "is playingggg");
                                mMediaPlayer.pause();
                                pause = 0;
                            }
                            Log.e("ddddddddddd", "after set play on click");
                            int pos = getAdapterPosition();
                            startActivity(new Intent(v.getContext(), Recycler_Music_Player_onclick.class)
                                    .putExtra("pos", pos));
                        }


                    });
                }
            }
        }

    }
public class Recycler\u MusicPlayer扩展了Recycler\u Music\u Player\u onclick{
//私人回收站;
适配器;
光标音乐接收器;
int music_column_index;
整数计数;
FastScrollRecyclerView循环视图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.recycler\u音乐播放器);
片名(“歌曲列表”);
recyclerView=(FastScrollRecyclerView)findViewById(R.id.recycler);
recyclerView.setLayoutManager(新的LinearLayoutManager(本));
gc();
String[]proj={MediaStore.Audio.Media.\u ID,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.DISPLAY\u名称,
MediaStore.Video.Media.SIZE};
musiccursor=managedQuery(MediaStore.Audio.Media.EXTERNAL\u CONTENT\u URI,
项目,空,空,空);
count=musiccursor.getCount();
适配器=新适配器(此);
recyclerView.setAdapter(适配器);
}
公共类适配器扩展了RecyclerView.Adapter{
私有上下文;
私人充气机;
公用适配器(回收器\音乐层回收器\音乐层){
充气机=从(回收器\音乐层)开始的充气机布局;
mContext=回收器\音乐层;
}
@凌驾
公共MyViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图=充气机。充气(R.layout.song\u布局,父级,false);
返回新的MyViewHolder(视图);
}
@凌驾
公共无效onBindViewHolder(MyViewHolder,int位置){
gc();
字符串id=null;
音乐列索引=musiccursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME);
音乐指挥者。移动位置(位置);
id=musiccursor.getString(音乐列索引);
音乐列索引=musiccursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE);
音乐指挥者。移动位置(位置);
id+=“大小(KB):”+musiccursor.getString(音乐列索引);
holder.song.setText(id);
}
@凌驾
public int getItemCount(){
返回计数;
}
公共类MyViewHolder扩展了RecyclerView.ViewHolder{
文本视图歌曲;
图像视图播放;
公共MyViewHolder(查看项目视图){
超级(项目视图);
song=(TextView)itemView.findViewById(R.id.song);
play=(ImageView)itemviewbyd(R.id.play);
itemView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
if(mmediplayer.isPlaying()){
Log.e(“zzzzzz”,“正在播放ggg”);
暂停();
暂停=0;
}
Log.e(“ddddd”,“点击设置播放后”);
int pos=getAdapterPosition();
startActivity(新的意图(v.getContext(),Recycler\u Music\u Player\u onclick.class)
.putExtra(“pos”,pos));
}
});
}
}
}
}

您需要在管理查询中对记录进行排序,请尝试以下更改

您可以通过升序和降序来管理订单

升序

String sortOrder = MediaStore.Audio.Media.DISPLAY_NAME+ " ASC";
String sortOrder = MediaStore.Audio.Media.DISPLAY_NAME+ " DESC";
降序

String sortOrder = MediaStore.Audio.Media.DISPLAY_NAME+ " ASC";
String sortOrder = MediaStore.Audio.Media.DISPLAY_NAME+ " DESC";
管理查询中的更改

musiccursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,proj, null, null, sortOrder);

您需要在管理查询中对记录进行排序,请尝试以下更改

您可以通过升序和降序来管理订单

升序

String sortOrder = MediaStore.Audio.Media.DISPLAY_NAME+ " ASC";
String sortOrder = MediaStore.Audio.Media.DISPLAY_NAME+ " DESC";
降序

String sortOrder = MediaStore.Audio.Media.DISPLAY_NAME+ " ASC";
String sortOrder = MediaStore.Audio.Media.DISPLAY_NAME+ " DESC";
管理查询中的更改

musiccursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,proj, null, null, sortOrder);

您将音乐文件的名称存储在哪个变量中?可能的重复项我没有存储。我将整个数据数组存储在数组中。下面的答案有效。谢谢。您将音乐文件的名称存储在哪个变量中?可能的重复项我没有存储。我将整个数据数组存储在数组中。下面的答案有效。谢谢。