处理来自edittext android的数组值错误

时间:2017-08-31 03:40:43

标签: java android arraylist

我编写了一个代码,用于在地图活动中显示地图标记。当我想在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()

之上

1 个答案:

答案 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();
}