【发布时间】:2020-09-11 21:46:06
【问题描述】:
我有几个地方autocompletetextview 允许用户选择多个位置。然后通过按下 Next 按钮将这些位置传递到下一个 java 页面,以从用户选择的位置绘制路线。现在,如果用户单击“返回”按钮并从其中一个自动完成文本视图框中删除文本并再次单击下一步按钮,则该文本视图框中的地址不会被删除,我仍然会在绘制路线的 java 页面中选择上一个位置.我想我应该使用 TextWatcher 来获取 onTextChanged 或 afterTextChanged 以了解用户何时从其中一个 textview 框中删除文本。所以,我的问题是:当用户从 textview 搜索框中删除文本时,如何删除或清除先前选择的位置?
这是自动完成文本视图搜索框代码之一:
final AutoCompleteTextView location3 = findViewById(R.id.autocomplete3);
location3.setAdapter(new PlaceAutoSuggestAdapter(AddstopPage.this, android.R.layout.simple_dropdown_item_1line));
location3.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
clear_text3 = findViewById(R.id.clear_text3);
clear_text3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
location3.getText().clear();
}
});
location3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
location3.setCursorVisible(true);
}
});
location3.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.d("Address : ", location3.getText().toString());
value = parent.getItemAtPosition(position).toString();
LatLng latLng = getLatLngFromAddress(location3.getText().toString());
if (latLng != null) {
latlng3 = String.valueOf(latLng);
Log.d("Lat Lng : ", " " + latLng.latitude + " " + latLng.longitude);
Address address = getAddressFromLatLng(latLng);
if (address != null) {
Log.d("Address : ", "" + address.toString());
Log.d("Address Line : ", "" + address.getAddressLine(0));
Log.d("Phone : ", "" + address.getPhone());
Log.d("Pin Code : ", "" + address.getPostalCode());
Log.d("Feature : ", "" + address.getFeatureName());
Log.d("More : ", "" + address.getLocality());
} else {
Log.d("Adddress", "Address Not Found");
}
} else {
Log.d("Lat Lng", "Lat Lng Not Found");
}
}
});
这是我的适配器页面代码:
public class PlaceAutoSuggestAdapter extends ArrayAdapter implements Filterable {
private ArrayList<String> results;
private PlaceApi placeApi=new PlaceApi();
public PlaceAutoSuggestAdapter(Context context,int resId){
super(context,resId);
}
@Override
public int getCount(){
return results.size();
}
@Override
public String getItem(int pos){
return results.get(pos);
}
@NotNull
@Override
public Filter getFilter(){
return new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults filterResults=new FilterResults();
if(constraint!=null){
results=placeApi.autoComplete(constraint.toString());
filterResults.values=results;
filterResults.count=results.size();
}
return filterResults;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results1) {
if(results1 !=null && results1.count>0){
notifyDataSetChanged();
}
else{
notifyDataSetInvalidated();
}
}
};
}
}
【问题讨论】:
标签: java android-studio autocomplete textview