如何在List <textview> android中找到字符串

时间:2016-06-20 15:58:45

标签: java android

我有一个TextView类型的列表“allPay”。我需要在此列表中找到一个字符串“abc”。我使用“contains()”从这个列表中找到一个字符串,但即使列表包含这个字符串,我总是得到“false”作为答案。

以下是代码:

TextView tv_method_name = (TextView) findViewById(R.id.tv_method_name);
tv_method_name.setText("abc");
tv_method_name.setText("abcde");

List<TextView> allPay = new ArrayList<TextView>();

allpay.add(tv_method_name);
String str = "abc";
System.out.println("====allpay contains string?:" +     
allPay.contains("abc"));

结果:

==== allpay包含字符串?:false

4 个答案:

答案 0 :(得分:1)

您必须使用for循环或每个循环遍历Textviews列表以检查文本。只需使用此方法:

boolean listContains(List<TextView> txtViews, String textToCheck) {
    for (TextView txtView : txtViews) {
        if (txtView.getText().toString.contains(textToCheck)) {
            return true;
        }
    }
    return false;
}

然后使用:

if (listContains(allPay, "abc")) {
    //"abc" is contained within one of the lists, do something
}

答案 1 :(得分:0)

你不能这样做:

allPay.contains("abc"));

因为该方法包含搜索对象...而不是对象的内容......

所以你问的TextViews列表是否包含一个String ..并且不正确

您可以搜索循环中的列表并使用String#indexOf()方法

进行搜索
List<String> allPay = new ArrayList<String>();

allpay.add(tv_method_name);
allpay.add(tv_method_name);
allpay.add(tv_method_name);
allpay.add(tv_method_name);
allpay.add(tv_method_name);
for (TextView tv : allPay) {
    if (tv.getText.toString().indexOf("abc")!=-1) {
        System.out.println("Found!!");
    }
}

答案 2 :(得分:0)

我认为问题出在这一部分。

TextView tv_method_name = (TextView) findViewById(R.id.tv_method_name);
tv_method_name.setText("abc");
tv_method_name.setText("abcde");

tv_method_name被修改两次,因此变量中的最后一个值是“abcde”,当你查看值为“abc”的列表时,方法“Contains”返回“false”,因为这个对象没有存在。

答案 3 :(得分:0)

您有一个TextView对象列表,并且您正在搜索String。那不行。

尝试以下方法:

String yourText = "abc";
for(TextView tv: allPlay){
   if(tv!=null && tv.getText()!=null && tv.getText().toString().contains(yourText)){
       Log.d(TAG,"found:" + true);
   }
}