Android POJO类的本质

Android POJO类的本质,android,Android,请告诉我,我是android新手,我需要完全了解在android中使用POJO类填充recyclerview。我这样做的方式是从本地/API获取数据,将其放入2DArrayList并将其传递给recyclerview的适配器类,例如,下面的代码从设备获取音乐并将其添加到musics 2DArrayList: musics.clear(); musicResolver = getActivity().getContentResolver(); Uri musicuri = Medi

请告诉我,我是android新手,我需要完全了解在android中使用
POJO
类填充
recyclerview
。我这样做的方式是从本地/API获取数据,将其放入2D
ArrayList
并将其传递给recyclerview的适配器类,例如,下面的代码从设备获取音乐并将其添加到musics 2D
ArrayList

musics.clear();
    musicResolver = getActivity().getContentResolver();
    Uri musicuri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    Cursor musicCursor = musicResolver.query(musicuri, null, null, null, "LOWER(" + MediaStore.Audio.Media.TITLE + ")ASC");
    if (musicCursor != null) {
        while (musicCursor.moveToNext()) {
            ArrayList<String> tempmusic = new ArrayList<>();
            tempmusic.add(0, musicCursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
            long time = Integer.parseInt(musicCursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION)));
            tempmusic.add(1, (new SimpleDateFormat("mm:ss", Locale.getDefault())).format(new Date(time)));
            tempmusic.add(2, musicCursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.SIZE));
            tempmusic.add(3, musicCursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));

            musics.add(tempmusic); //2d array
        }
        musicCursor.close();
    }

    rvAdapter.notifyDataSetChanged();
用于使用POJO类进行检索的方法:

//music.clear();
musicResolver=getActivity().getContentResolver();
Uri musicuri=MediaStore.Audio.Media.EXTERNAL\u CONTENT\u Uri;
游标musicCursor=musicSolver.query(musicuri,null,null,null,“LOWER(“+MediaStore.Audio.Media.TITLE+”)ASC”);
if(musicCursor!=null){
while(musicCursor.moveToNext()){
ArrayList tempmusic=新建ArrayList();
字符串数据=
getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
字符串标题=
getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
字符串相册=
getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));
弦乐艺术家=
getString(cursor.getColumnIndex(MediaStore.Audio.Media.SIZE));
添加(新音频(数据、标题、专辑、艺术家));
}
musicCursor.close();
}
rvAdapter.notifyDataSetChanged();
现在我的问题是:

  • 如果我能用2d arraylist实现整个操作,pojo类的用处是什么
  • 如果pojo类实现了serializable,那么它意味着什么?与使用普通pojo类或仅使用2d arraylist相比,它有什么优势
  • 非常感谢您的解释,谢谢

    pojo类的用途是什么

    • 术语“POJO”最初表示不遵循任何主要Java对象模型、约定或框架的Java对象;如今,“POJO”也可以用作“普通老JavaScript对象”的首字母缩略词,在这种情况下,该术语表示具有类似血统的JavaScript对象

    • POJO通常很简单,因此不依赖于其他库、接口或注释。这增加了在多个项目类型中重用的机会

    阅读更多关于和从这里

    如果pojo类实现了serializable,那么它意味着什么?与使用普通pojo类或仅使用2d arraylist相比,它有什么优势

    • 类的可序列化性由实现java.io.Serializable接口的类启用。未实现此接口的类的任何状态都不会序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义

    阅读

    @Tobioyeelekan很高兴帮助你
    public class Audio implements Serializable {
    
    private String data;
    private String title;
    private String size;
    private String duration;
    
    public Audio(String data, String title, String duration, String size) {
        this.data = data;
        this.title = title;
        this.duration = duration;
        this.size = size;
    }
    
    public String getData() {
        return data;
    }
    
    public String getTitle() {
        return title;
    }
    
    public String getDuration() {
        return duration;
    }
    
    public String getSize() {
        return size;
    }
    }
    
    //musics.clear();
    musicResolver = getActivity().getContentResolver();
    Uri musicuri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    Cursor musicCursor = musicResolver.query(musicuri, null, null, null, "LOWER(" + MediaStore.Audio.Media.TITLE + ")ASC");
    if (musicCursor != null) {
        while (musicCursor.moveToNext()) {
            ArrayList<String> tempmusic = new ArrayList<>();
    String data = 
    cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
          String title = 
    cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
          String album = 
    cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));
          String artist = 
    cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.SIZE));
    
    tempmusic.add(new Audio(data, title, album, artist));
    
        }
        musicCursor.close();
    }
    
    rvAdapter.notifyDataSetChanged();