Java 为uniqe值从ArrayList添加/删除值
我正在开发一个应用程序,它使用Java 为uniqe值从ArrayList添加/删除值,java,android,arraylist,Java,Android,Arraylist,我正在开发一个应用程序,它使用ArrayList填充ListView。我对我的列表视图使用自定义类。我想为我的Listview添加/删除ArrayList。我的目标是控制列表项元素,如果它存在于ArrayList删除中,或者如果它不存在于ArrayList添加列表项 为了解释我的情况,我在下面粘贴了我的代码 这是我的定制课程 public class NDListItem { String textdata; public NDListItem(String textdata)
ArrayList
填充ListView
。我对我的列表视图使用自定义类。我想为我的Listview
添加/删除ArrayList
。我的目标是控制列表项元素,如果它存在于ArrayList
删除中,或者如果它不存在于ArrayList
添加列表项
为了解释我的情况,我在下面粘贴了我的代码
这是我的定制课程强>
public class NDListItem {
String textdata;
public NDListItem(String textdata) {
this.textdata = textdata;
}
}
这是我使用课堂的方法。Name参数来自另一个活动。它来得正是时候。我使用for循环来解决这个问题,但我无法获得我想要做的事情。我阅读了一些文档,找到了另一个解决方案。在我的类中使用equals和hash-code方法可能可以完成我的工作,但我不知道如何使用它
编辑:在第二个代码块中添加一些解释和myItems
解释
public void addLayersection(String name) {
//MyList already defined on the scope..
//MyList looks like this
// ArrayList<NDListItem> myItems = new ArrayList<>();
NDListItem listItem = new NDListItem(name);
if (myItems.size() == 0) {
myItems.add(listItem);
} else {
if(myItems.contains(listItem))
{
myItems.add(listItem);
}
else
{
myItems.remove(listItem);
}
}
myAdapter.notifyDataSetChanged();
}
好的,从你提供的细节来看
因为在自定义类中没有可用的.equals()
重写方法NDListItem
您的列表将基于引用比较对象,所以只需在自定义的NDListItem
类中重写.equals()
方法即可
Like,(仅用于理解的伪代码)
现在,.contains()
方法将根据需要在自定义对象列表上工作
因为,您对textdata
属性进行了对象比较。我无法在我的项目中添加此用法。您不能向自定义类添加几个方法吗?我可以添加,但这总是会给我带来一些奇怪的错误。不过,请阅读该教程。@salih-Happy Coding:)
public class NDListItem {
String textdata;
public NDListItem(String textdata) {
this.textdata = textdata;
}
public boolean equals(Object o) {
if (o == null) return false;
//if(!(o instanceof) NDListItem) return false;
if (!(o instanceof NDListItem)) return false;
NDListItem other = (NDListItem) o;
if (!this.textdata.equals(other.textdata))
return false;
else
return true;
}
}
@Override
public boolean equals(Object obj) {
NDListItem ndListItemObject = (NDListItem) obj;
return this.textdata.equalIgnoreCase(ndListItemObject.textdata);
}