Java 将用户输入与字符串数组列表进行比较

Java 将用户输入与字符串数组列表进行比较,java,android,string,arraylist,Java,Android,String,Arraylist,所以我已经尝试了几天了,一直在搜索和尝试不同的东西,但它们似乎都不适合我。我不想将用户输入与字符串ArrayList进行比较,看看它是否具有该值。我这样做是为了防止用户只发送字符串ArrayList中的文本,而发送他们想要的任何文本。以下是简化代码: ` private ArrayList searchNames=new ArrayList(); 编辑文本名称CaptureNo; 编辑文本名称captureuz; 按钮发送; 文本视图tvTi; public void sendTestMsg()

所以我已经尝试了几天了,一直在搜索和尝试不同的东西,但它们似乎都不适合我。我不想将用户输入与字符串ArrayList进行比较,看看它是否具有该值。我这样做是为了防止用户只发送字符串ArrayList中的文本,而发送他们想要的任何文本。以下是简化代码:

`

private ArrayList searchNames=new ArrayList();
编辑文本名称CaptureNo;
编辑文本名称captureuz;
按钮发送;
文本视图tvTi;
public void sendTestMsg(){
//TODO自动生成的方法存根
send.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
对于(int i=0;i
`

这是我得到的。这段代码似乎正在发送信息,但文本视图仍然变为警告。
您能帮忙吗?非常感谢您的阅读。

使用
.equals
进行比较,所以请更改

if(searchNames.get(i).toString().toUpperCase()
                                          .contains(nameCaptureNo
                             .getText().toString().toUpperCase()) ) {

或者直接使用
.contains
作为

并且不需要循环搜索名称,所以使用下面的代码来搜索
。contains
,因此更改

   for (int i = 0; i < searchNames.size(); i++) {
                 if            (searchNames.get(i).toString().toUpperCase()
                                      .contains(nameCaptureNo
                         .getText().toString().toUpperCase()) ) {

            send.setVisibility(View.VISIBLE);
                   //here goes code wich sends info
        }else{
                     send.setVisibility(View.INVISIBLE);
                         //warning                   
                             tvTi.setText("Izvēlies pilsētu no saraksta!");
                     tvTi.setTextColor(Color.RED);

                     continue;
                 }
                 break;
             }

注意:将
searchNames
值保存为
uppercase
您可以对循环进行所有更改。但是,只需要一个元素,它就可以使您的if条件
true
使字符串有效/发送。如果在以前的某个循环迭代中执行了else块,则不应触发警告。更改您的for循环指向如下内容:

boolean found = false;
for (int i = 0; i < searchNames.size(); i++) {
    if (searchNames.get(i).toString().toUpperCase()
           .contains(nameCaptureNo
                       .getText().toString().toUpperCase())) {
        found = true;
        // save additional info you need to call send to variables here
        break;
    }
}
if (found) {
    send.setVisibility(View.VISIBLE);
    //here goes code wich sends info
} else {
    send.setVisibility(View.INVISIBLE);
    //warning                   
    tvTi.setText("Izvēlies pilsētu no saraksta!");
    tvTi.setTextColor(Color.RED);
}
boolean-found=false;
对于(int i=0;i

另外
s1.contains(s2)
检查
s2
是否是
s1
的子字符串,即
s1=“Hello World!”
s2=“World”
将产生true。您可能希望使用
equals
equalsIgnoreCase

尝试这种方法,希望这能帮助您解决问题。

send.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
          boolean isContain = false;
          for (int i = 0; i < searchNames.size(); i++) {
                if (searchNames.get(i).toString().toUpperCase().contains(nameCaptureNo.getText().toString().toUpperCase())) {
                     isContain = true;
                     break;
                 }
          }
          if(isContain){
              send.setVisibility(View.VISIBLE);
              tvTi.setText("");
              //here goes code wich sends info
          }else{
              send.setVisibility(View.INVISIBLE);
              tvTi.setText("Izvēlies pilsētu no saraksta!");
              tvTi.setTextColor(Color.RED);
          }
     }
});
send.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
布尔值isContain=false;
对于(int i=0;i
示例代码如下所示

您不需要更改为大写。请按如下所示使用equalsIgnoreCase

public boolean checkString(String value)
{
boolean found = false;

for(String searchcontent:searchNames)
{
if((searchcontent).equalsIgnoreCase(value))
{
                found = true;
                break;
            }

        }


        return found;
}

完成以下代码

public boolean checkString(String value)
{
boolean found = false;

for(String searchcontent:searchNames)
{
if((searchcontent).equalsIgnoreCase(value))
{
                found = true;
                break;
            }

        }


        return found;
}
MainActivity.java

package com.example.userinput;

import java.util.ArrayList;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {


      private ArrayList<String> searchNames = new ArrayList<String>();
      EditText nameCaptureNo;
      EditText nameCaptureUz;
      Button send;
      TextView tvTi;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        nameCaptureNo = (EditText) findViewById(R.id.nameCaptureNo);
        nameCaptureUz = (EditText) findViewById(R.id.nameCaptureUz);




        nameCaptureNo.addTextChangedListener(new TextWatcher()
        {

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                Log.d("MainActivity", "Text Modified "+ nameCaptureNo.getText().toString());

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {

                Log.d("MainActivity", "Text Modified "+ nameCaptureNo.getText().toString());
                if(checkString(nameCaptureNo.getText().toString()))
                {
                    send.setVisibility(View.VISIBLE);
                }
                else
                {
                    send.setVisibility(View.INVISIBLE);
                    //warning                   
                    tvTi.setText("Izvēlies pilsētu no saraksta!");
                    tvTi.setTextColor(Color.RED);
                }

            }

            @Override
            public void afterTextChanged(Editable s) {
                // TODO Auto-generated method stub

                Log.d("MainActivity", "Text Modified "+ nameCaptureNo.getText().toString());

            }

        });

        send = (Button) findViewById(R.id.send);

        //Set the send button invisible 
        send.setVisibility(View.INVISIBLE);

        tvTi = (TextView) findViewById(R.id.tvTi);


        searchNames.add("Test1");
        searchNames.add("Test2");
        searchNames.add("Test3");
        searchNames.add("Test4");
        searchNames.add("Test5");
        searchNames.add("Test6");
    }

    public boolean checkString(String value)
    {
        boolean found = false;

        for(String searchcontent:searchNames)
        {
            if((searchcontent).equalsIgnoreCase(value))
            {
                found = true;
                break;
            }

        }


        return found;
    }
}
package com.example.userinput;
导入java.util.ArrayList;
导入android.app.Activity;
导入android.graphics.Color;
导入android.os.Bundle;
导入android.text.Editable;
导入android.text.TextWatcher;
导入android.util.Log;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.TextView;
导入android.widget.Toast;
公共类MainActivity扩展了活动{
private ArrayList searchNames=new ArrayList();
编辑文本名称CaptureNo;
编辑文本名称captureuz;
按钮发送;
文本视图tvTi;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
nameCaptureNo=(EditText)findViewById(R.id.nameCaptureNo);
nameCaptureUz=(EditText)findViewById(R.id.nameCaptureUz);
nameCaptureNo.addTextChangedListener(新的TextWatcher()
{
@凌驾
更改前的公共无效(字符序列、整数开始、整数计数、,
整数后){
Log.d(“MainActivity”,“Text Modified”+nameCaptureNo.getText().toString());
}
@凌驾
public void onTextChanged(字符序列,int start,int before,
整数计数){
Log.d(“MainActivity”,“Text Modified”+nameCaptureNo.getText().toString());
if(检查字符串(nameCaptureNo.getText().toString())
{
send.setVisibility(View.VISIBLE);
public boolean checkString(String value)
{
boolean found = false;

for(String searchcontent:searchNames)
{
if((searchcontent).equalsIgnoreCase(value))
{
                found = true;
                break;
            }

        }


        return found;
}
package com.example.userinput;

import java.util.ArrayList;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {


      private ArrayList<String> searchNames = new ArrayList<String>();
      EditText nameCaptureNo;
      EditText nameCaptureUz;
      Button send;
      TextView tvTi;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        nameCaptureNo = (EditText) findViewById(R.id.nameCaptureNo);
        nameCaptureUz = (EditText) findViewById(R.id.nameCaptureUz);




        nameCaptureNo.addTextChangedListener(new TextWatcher()
        {

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                Log.d("MainActivity", "Text Modified "+ nameCaptureNo.getText().toString());

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {

                Log.d("MainActivity", "Text Modified "+ nameCaptureNo.getText().toString());
                if(checkString(nameCaptureNo.getText().toString()))
                {
                    send.setVisibility(View.VISIBLE);
                }
                else
                {
                    send.setVisibility(View.INVISIBLE);
                    //warning                   
                    tvTi.setText("Izvēlies pilsētu no saraksta!");
                    tvTi.setTextColor(Color.RED);
                }

            }

            @Override
            public void afterTextChanged(Editable s) {
                // TODO Auto-generated method stub

                Log.d("MainActivity", "Text Modified "+ nameCaptureNo.getText().toString());

            }

        });

        send = (Button) findViewById(R.id.send);

        //Set the send button invisible 
        send.setVisibility(View.INVISIBLE);

        tvTi = (TextView) findViewById(R.id.tvTi);


        searchNames.add("Test1");
        searchNames.add("Test2");
        searchNames.add("Test3");
        searchNames.add("Test4");
        searchNames.add("Test5");
        searchNames.add("Test6");
    }

    public boolean checkString(String value)
    {
        boolean found = false;

        for(String searchcontent:searchNames)
        {
            if((searchcontent).equalsIgnoreCase(value))
            {
                found = true;
                break;
            }

        }


        return found;
    }
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="${packageName}.${activityClass}" >

    <TextView
        android:id="@+id/tvTi"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world"
        android:textSize="30dp" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/tvTi"
        android:layout_marginTop="36dp"
        android:text="nameCaptureNo"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="32dp"
        android:text="nameCaptureUz"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <EditText
        android:id="@+id/nameCaptureUz"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textView3"
        android:layout_alignBottom="@+id/textView3"
        android:layout_alignLeft="@+id/nameCaptureNo"
        android:layout_marginLeft="16dp"
        android:ems="10" />

    <Button
        android:id="@+id/send"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/nameCaptureUz"
        android:layout_marginLeft="40dp"
        android:layout_marginTop="30dp"
        android:text="Send" />

    <EditText
        android:id="@+id/nameCaptureNo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textView1"
        android:layout_alignBottom="@+id/textView1"
        android:layout_alignParentRight="true"
        android:ems="10" />

</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">UserInput</string>
    <string name="hello_world">TextView tvTi</string>

</resources>