使用((Button)v).getText()。toString()从列表中删除字符串

时间:2016-08-16 16:29:52

标签: android button arraylist

我缺少什么,我有一些类似的代码:

    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");而不是工作。有没有办法可以检查字符串是否等同于实现。

1 个答案:

答案 0 :(得分:1)

ArrayList就像一个数组一样,它可以通过它获得一个int的索引项。在这种情况下,将第一个项目添加到myList&#34; hello&#34;在索引0处。所以在你的代码中它将是:

  1. 简单显式索引

    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);
        }
    });
    
  2. 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);
            }
        }
    });
    
  3. 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");
            }
        }
    });