Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从数组中搜索editText中的相关单词_Java_Android_Arrays - Fatal编程技术网

Java 从数组中搜索editText中的相关单词

Java 从数组中搜索editText中的相关单词,java,android,arrays,Java,Android,Arrays,我制作了一个地址数组,其中有5个值 String address[] = { "New York", "Sydney", "Brisbane", "Paris", "Milan" } 我在MapsActivity中为事件onClicklistener编写了一个代码。我使用此事件在“地图”活动中使用“来自数组的标题”值搜索某些标记 btncari.setOnClickListener(new View.OnClickListener() {

我制作了一个地址数组,其中有5个值

String address[] = {
    "New York",
    "Sydney",
    "Brisbane",
    "Paris",
    "Milan"
}
我在
MapsActivity
中为事件
onClicklistener
编写了一个代码。我使用此事件在“地图”活动中使用“来自数组的标题”值搜索某些标记

btncari.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            for(int i=0; i < address.length; i++) {
                if (nama[i].equalsIgnoreCase(editcari.getText().toString().trim())) {
                    marker.remove();
                    myMap.addMarker(new MarkerOptions().position(new LatLng(lat[i], lon[i])).title(nama[i])
                    .icon(BitmapDescriptorFactory.fromResource(R.drawable.marker_wisata))
                    );
                    CameraPosition camPos = new CameraPosition.Builder()
                            .target(new LatLng(lat[i],  lon[i]))
                            .zoom(18)
                            .build();
                    CameraUpdate camUpd3 = CameraUpdateFactory.newCameraPosition(camPos);
                    myMap.animateCamera(camUpd3);
                    break;
                } else
                {
                    editcari.setText("Unavailable");
                }
            }}
    });
btncari.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
for(int i=0;i
如果我想在
EditText
中键入某个地址,但单词与实际地址值不完全相同,例如,如果我只在
EditText
中键入“ari”,它将显示“Paris”,因此我不需要在数组值中键入完整地址。如何解决这个问题?

您可以使用

nama[i].toLowerCase().contains(editcari.getText().toString().trim().toLowerCase())
// ^^^^^^^^^^     convert array values to lowercase
// convert input to lower case                       ^^^^^^^^^^^^^^^^^^^^                                                            
// check array value contains the input
或者在数组中以小写形式添加值,然后使用
nama[i]。contains

还有一点改进

String input = editcari.getText().toString().trim().toLowerCase();
// take input only once , outside loop
for(int i=0; i < address.length; i++) {
         if (nama[i].toLowerCase().contains(input)) {
String input=editcari.getText().toString().trim().toLowerCase();
//只接受一次输入,在循环外
for(int i=0;i
改用textwatcher你不需要定义按钮,这是一个简单而快速的解决方案,Text watcher会自动从编辑文本中获取文本,并从给定的数组列表中搜索。如果有两个以上的元素包含输入文本怎么办?我只在输入文本中键入地址。它是否只忽略小写和大写?我需要键入一个一些与数组值相关的单词,比如我键入“ari”,它将显示“paris”yes and contains将涵盖您要检查的部分paris contains ari,它将为您提供真实信息我还有一个问题,当我直接按下
search
按钮时,它将显示第一个数组。我想在循环
if(!input.isEmpty()){//your loop code}else{//show error}之前显示一条错误警告
感谢您的建议,现在我添加了
if条件
berfore循环,就像这样
if(editsearch.gettext().toString().isEmpty()){//my loop code}else{//showerror}
,它成功了