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