2017-01-22 33 views
0

不要被标题所迷惑,认为这是垃圾邮件,请仔细阅读。如何从ArrayAdapter中删除没有该对象引用但有另一个一致对象的对象?

我有一个自定义ArrayAdapter,它具有News类型的元素。

我使用我的在线来源填充该适配器Firebase

在Firebase中,有一个名为onChildRemoved的侦听器,用于检测数据库孩子是否被删除。 (对于那些不知道是谁)

下面是代码:

 @Override 
     public void onChildRemoved(DataSnapshot dataSnapshot) { 

      // this way you obtain the item removed 
      News news = dataSnapshot.getValue(News.class); 

      // here it doesn't remove the item 
      myAdapter.remove(news); 
     } 

我知道,它不会删除该条款,因为我news对象不引用对象的适配器。

所以问题来了。

我该如何删除一个没有其引用但我有另一个一致对象的对象?

更具体地说:

如何从一个ArrayAdapter中删除我的news对象?

回答

2

要做到这一点,你应该对新闻对象实施equals方法。此方法将比较此新闻的内部值。举例来说,如果你有一个id领域的新闻,你可以做这样的事情:

public class News { 

    String id; 

    @Override 
    public boolean equals(Object o) { 
     if(o instanceof News){ 
      News other = (News) o; 
      return this.id.equals(other.id); 
     }else{ 
      return false; 
     } 
    } 
} 
+0

我可以给自己一个轻拍背部客户端我的应用程序几乎在游戏商店 –

1

你必须正确地实现equals()在您的新闻类方法。然后即使有两个不同的实例,它也会被删除。

它是关于

a == b 

a.equals(b) 

当然之间的区别,如果它是你的自定义remove()myAdapter类的方法,你必须使用equals()方法(不==运营商),以确定要移除的对象。 所有标准收集实现均正确使用equals()

相关问题