Android 按字母顺序对来自手机存储器的数据进行排序?
我是android的初学者。我正在尝试从存储中获取音频文件并将其放入回收器视图。它可以完美加载,但是,我不知道如何按照文件名的字母顺序对整个列表进行排序。。我尝试了一些方法,但没有成功。请帮我解决这个问题。谢谢 这是我的Java文件: Recycler\u MusicPlayer.java: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
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);
您将音乐文件的名称存储在哪个变量中?可能的重复项我没有存储。我将整个数据数组存储在数组中。下面的答案有效。谢谢。您将音乐文件的名称存储在哪个变量中?可能的重复项我没有存储。我将整个数据数组存储在数组中。下面的答案有效。谢谢。