gpt4 book ai didi

java - Android:添加到列表中的最后一个对象会覆盖所有其他对象

转载 作者:行者123 更新时间:2023-12-01 07:56:36 25 4
gpt4 key购买 nike

我正在列表中输入对象,并注意到最后添加的对象覆盖了列表中的所有其他对象,即以下代码 fragment 。

private List<NoticiaListView> getNoticias() {
try {
List<Noticia> lNoticiaParseObject = null;
List<NoticiaListView> lNoticiaListView = new ArrayList<NoticiaListView>();
NoticiaListView nListView = new NoticiaListView();

ParseQuery<Noticia> query = ParseQuery.getQuery(Noticia.class);
query.whereEqualTo("ativo", true);
query.include("imagem");
lNoticiaParseObject = query.fromLocalDatastore().find();

if (!lNoticiaParseObject.isEmpty()) {
for (Noticia noticia : lNoticiaParseObject) {
nListView.setImagem(noticia.getImagemByteArray((Midia) noticia.getParseObject("imagem")));
nListView.setTitulo(noticia.getTitulo());
nListView.setConteudo(noticia.getConteudo());
nListView.setLink(noticia.getLink());
nListView.setCreatedAt(noticia.getCreatedAt().getTime());

lNoticiaListView.add(nListView);
}
return lNoticiaListView;
}
} catch (ParseException e) {
e.printStackTrace();
}

return null;
}

NoticiaListView 类:

public class NoticiaListView {
private String titulo;
private String conteudo;
private String link;
private long createdAt;
private byte[] imagemBytes;

public NoticiaListView() {
/*this.titulo = titulo;
this.conteudo = conteudo;
this.link = link;
this.createdAt = createdAt;
this.imagemBytes = imagemBytes;*/
}

//region GETTERS

public String getTitulo() {
return titulo;
}

public String getConteudo() {
return conteudo;
}

public String getLink() {
return link;
}

public long getCreatedAt() {
return createdAt;
}

public byte[] getImagem() {
return imagemBytes;
}

//endregion

//region SETTERS

public void setTitulo(String titulo) {
this.titulo = titulo;
}

public void setConteudo(String conteudo) {
this.conteudo = conteudo;
}

public void setLink(String link) {
this.link = link;
}

public void setCreatedAt(long createdAt) {
this.createdAt = createdAt;
}

public void setImagem(byte[] imagem) {
this.imagemBytes = imagem;
}
//endregion
}

类(class)通知:

public class Noticia extends ParseObject {

public Noticia() {
/*deixar vazio*/
}

//region GETTERS
public ParseACL getParseACL(){
return getParseACL();
}

/*public String getObjectId() {
return getObjectId();
}*/

/*public Date getCreatedAt() {
return getCreatedAt();
}*/

/* public Date getUpdatedAt() {
return getUpdatedAt();
}*/

public boolean isAtivo() {
return getBoolean("ativo");
}

public String getConteudo() {
return getString("conteudo");
}

public String getLink() {
return getString("link");
}

public String getTitulo() {
return getString("titulo");
}

public byte[] getImagemByteArray(Midia midia) {
byte[] imageData = new byte[0];
try {
imageData = midia.getParseFile("arquivo").getData();
} catch (ParseException e) {
e.printStackTrace();
}
return imageData;
}
//endregion

//region SETTERS
public void setACL(ParseACL acl){
put("ACL", acl);
}

public void setCreatedAt(Date createdAt) {
put("createdAt", createdAt);
}

public void setUpdatedAt(Date updatedAt) {
put("updatedAt", updatedAt);
}

public void setAtivo(boolean ativo) {
put("ativo", ativo);
}

public void setConteudo(String conteudo) {
put("conteudo", conteudo);
}

public void setLink(String link) {
put("link", link);
}

public void setTitulo(String titulo) {
put("titulo", titulo);
}

public void setImagem(ParseRelation<Midia> imagem) {
put("imagem", imagem);
}
//endregion
}

如何使用列表来解决这个问题?我希望不要仅仅因为一个原因就需要改变 Collection 。我读到另一个问题,可能的问题可能是“静态字段”,但在我的代码中没有任何静态字段。

最佳答案

请更改您的代码如下。因为您刚刚创建了对象一次,并且应该根据您的列表大小创建多次。您应该在 for 循环中创建对象。

private List<NoticiaListView> getNoticias() {
try {
List<Noticia> lNoticiaParseObject = null;
List<NoticiaListView> lNoticiaListView = new ArrayList<NoticiaListView>();


ParseQuery<Noticia> query = ParseQuery.getQuery(Noticia.class);
query.whereEqualTo("ativo", true);
query.include("imagem");
lNoticiaParseObject = query.fromLocalDatastore().find();

if (!lNoticiaParseObject.isEmpty()) {
for (Noticia noticia : lNoticiaParseObject) {
NoticiaListView nListView = new NoticiaListView();/// change here.
nListView.setImagem(noticia.getImagemByteArray((Midia) noticia.getParseObject("imagem")));
nListView.setTitulo(noticia.getTitulo());
nListView.setConteudo(noticia.getConteudo());
nListView.setLink(noticia.getLink());
nListView.setCreatedAt(noticia.getCreatedAt().getTime());

lNoticiaListView.add(nListView);
}
return lNoticiaListView;
}
} catch (ParseException e) {
e.printStackTrace();
}

return null;
}

关于java - Android:添加到列表中的最后一个对象会覆盖所有其他对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29360770/

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