Java 从数组中搜索editText中的相关单词
我制作了一个地址数组,其中有5个值Java 从数组中搜索editText中的相关单词,java,android,arrays,Java,Android,Arrays,我制作了一个地址数组,其中有5个值 String address[] = { "New York", "Sydney", "Brisbane", "Paris", "Milan" } 我在MapsActivity中为事件onClicklistener编写了一个代码。我使用此事件在“地图”活动中使用“来自数组的标题”值搜索某些标记 btncari.setOnClickListener(new View.OnClickListener() {
String address[] = {
"New York",
"Sydney",
"Brisbane",
"Paris",
"Milan"
}
我在MapsActivity
中为事件onClicklistener
编写了一个代码。我使用此事件在“地图”活动中使用“来自数组的标题”值搜索某些标记
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");
}
}}
});
btncari.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
for(int i=0;i
如果我想在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)) {
String input=editcari.getText().toString().trim().toLowerCase();
//只接受一次输入,在循环外
for(int i=0;i
改用textwatcher你不需要定义按钮,这是一个简单而快速的解决方案,Text watcher会自动从编辑文本中获取文本,并从给定的数组列表中搜索。如果有两个以上的元素包含输入文本怎么办?我只在输入文本中键入地址。它是否只忽略小写和大写?我需要键入一个一些与数组值相关的单词,比如我键入“ari”,它将显示“paris”yes and contains将涵盖您要检查的部分paris contains ari,它将为您提供真实信息我还有一个问题,当我直接按下search
按钮时,它将显示第一个数组。我想在循环if(!input.isEmpty()){//your loop code}else{//show error}之前显示一条错误警告
感谢您的建议,现在我添加了if条件berfore循环,就像这样if(editsearch.gettext().toString().isEmpty()){//my loop code}else{//showerror}
,它成功了