我缺少什么,我有一些类似的代码:
ArrayList<String> myList = new ArrayList<>();
myList.add("hello")
btn.setText("hello");
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String removeThisString = ((Button)v).getText().toString();
myList.remove(removeThisString);
}
});
但它没有用,所以我不得不遗漏一些东西。我的字符串removeThisStrings是否因为从按钮中提取字符串而使方法变得模糊?字符串应该已经有一个等于它们的方法,我可以让它比较它们,remove方法使用它。
我添加了一个日志,而removeThisString确实= to&#34;你好&#34;和myList = [&#34;你好&#34;]。并且myList.contains(removeThisString)是假的,所以即使它们看起来一样,但它们不是以某种方式。
如果我做myList.remove("hello");
而不是工作。有没有办法可以检查字符串是否等同于实现。
答案 0 :(得分:1)
ArrayList就像一个数组一样,它可以通过它获得一个int的索引项。在这种情况下,将第一个项目添加到myList&#34; hello&#34;在索引0处。所以在你的代码中它将是:
简单显式索引
ArrayList<String> myList = new ArrayList<>();
myList.add("hello")
btn.setText("hello");
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String removeThisString = btn.getText().toString();
myList.remove(0);
}
});
OR条件解决方案:
ArrayList<String> myList = new ArrayList<>();
myList.add("hello")
btn.setText("hello");
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String removeThisString = btn.getText().toString();
if (removeThisString.equals(myList.get(0))) {
myList.remove(0);
}
}
});
OR条件和更动态的解决方案:
final ArrayList<String> myList = new ArrayList<>();
myList.add("hello");
btn.setText("hello");
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String removeThisString = ((Button)v).getText().toString();
if (myList.size() > 0) {
for (int i = 0; i < myList.size(); i++) {
if (removeThisString.equals(myList.get(i))) {
myList.remove(i);
}
}
} else {
((Button)v).setText("Array List is empty");
}
}
});