2017-08-31 75 views
0

我在地圖活動中編寫了一個用於顯示地圖標記的代碼。當我想在EditText中搜索一些數組值並輸入錯誤值時,我想在這裏顯示錯誤消息是我的btncari.onClickListener處理來自edittext的數組值錯誤android

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" eventhough我輸入從陣列權值。所以當我把正確的值放在editsearch上時,它會縮放到我輸入的標記。問題是"error message"仍在不斷顯示。我想if Arrays.asListif (editcari.getText()以上。

回答

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(); 
} 
+0

我跟着你所有的指令,但現在的問題是'worng第一個參數類型找到java.lang.string [],必需java.util.arraylist '錯誤顯示當我輸入'如果(checkArrayList(nama' –

+0

代碼修改,現在檢查 – EKN

+0

它會顯示錯誤消息,現在的問題是我總是得到錯誤的一部分,每次我按搜索,它只是吐司消息,顯示錯誤,但它的應用程序運行完美 –