使用数组中editText中的相关单词进行搜索



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

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

我在MapsActivity中为事件onClicklistener编写了一个代码。我使用此事件在我的maps活动中搜索具有数组值中的标题的一些标记。

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",所以我不需要在数组值中键入完整地址。如何解决这个问题?

您可以使用

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

最新更新