gpt4 book ai didi

android - POJO类的本质

转载 作者:行者123 更新时间:2023-11-29 01:04:50 25 4
gpt4 key购买 nike

请问我是 android 的新手,我需要完全理解 POJO 类在 android 中填充 recyclerview 的用法。我这样做的方法是从本地/API 获取数据,将其放入 2D ArrayList 并将其传递给 recyclerview 的适配器类,例如下面的代码从设备获取音乐并将其添加到音乐中二维 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 类来实现 Serializable,见下文:

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;
}
}

使用POJO类检索的方法:

//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();

现在我的问题是:

  1. 如果我能用2d arraylist实现整个操作,那么pojo类有什么用。
  2. 如果 pojo 类实现可序列化,这意味着什么以及它相对于使用普通 pojo 类或仅使用 2d arraylist 的优势

非常感谢清楚的解释,谢谢。

最佳答案

What is the usefulness of the pojo class

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

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

阅读更多关于 Plain old Java object (POJO) 的信息从这里Advantage of POJO

If pojo class implements serializable, what does it mean and the advantage(s) it has over using an ordinary pojo class or just using a 2d arraylist

Serializable

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

阅读serialization - advantages and disadvantages

关于android - POJO类的本质,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48034180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com