Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为uniqe值从ArrayList添加/删除值_Java_Android_Arraylist - Fatal编程技术网

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