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

时间:2017-08-30 14:00:24

标签: java android arrays

我创建了一个地址数组,其中有5个值。

String address[] = {
    "New York",
    "Sydney",
    "Brisbane",
    "Paris",
    "Milan"
}

我在onClicklistener中为事件MapsActivity编写了代码。我使用此事件在我的地图活动中使用数组值中的标题搜索某个标记。

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

如果我想在EditText中键入一些地址,但这些字词与实际地址值不完全相同,例如,如果我在EditText上仅键入“ari”,则会显示“Paris”,所以我不需要在数组值中键入完整地址。如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您可以使用

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)) {