我编写了一个代码,用于在地图活动中显示地图标记。当我想在EditText
中搜索某个数组值并输入错误值时,我想在此处显示错误消息是btncari.onClickListener
。
btncari.setOnClickListener(new View.OnClickListener() {
int duration = Toast.LENGTH_SHORT;
@Override
public void onClick(View view) {
if ( editcari.getText().toString().isEmpty()
|| editcari.getText().toString().equals(null)) {
Toast.makeText(FragmentPeta.this, "Masukkan Nama Wisata", duration).show();
} else {
for(int i=0; i < nama.length; i++) {
if (nama[i].toLowerCase().contains(editcari.getText().toString())) {
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;
}
}
}
}
});
我也尝试过这样的Arrays
if (Arrays.asList(nama).contains(editcari.getText().toString())) {
Toast.makeText(FragmentPeta.this, "welcome", duration).show();
}
else
{
Toast.makeText(FragmentPeta.this, "Error", duration).show();
}
不同之处在于,当我使用Arrays
时,它总会显示"Error"
,尽管我从数组中输入了正确的值。因此,当我在editsearch上输入正确的值时,它将缩放到我输入的标记。问题是"error message"
仍在继续显示。
我将if Arrays.asList
置于if (editcari.getText()
。
答案 0 :(得分:0)
尝试
if (nama[i].contains(editcari.getText().toString())){
//Your code
}
而不是
if (nama[i].toLowerCase().contains(editcari.getText().toString())){
//Your code
}
另外,您可以创建一种方法来检查数组列表中包含的编辑文本输入
boolean checkArrayList(String[] list, String input) {
for (String item : list) {
if (item.equals(input)) {
return true;
}
}
return false;
}
然后使用它
if (checkArrayList(nama, editcari.getText().toString())) {
Toast.makeText(FragmentPeta.this, "welcome", duration).show();
} else {
Toast.makeText(FragmentPeta.this, "Error", duration).show();
}