Android Google Places API - PlaceAutocompleteFragment 清除按钮侦听器
Android Google Places API - PlaceAutocompleteFragment clear button listener
我在我的项目中使用 Google Places API for Android - PlaceAutocompleteFragment API 来搜索位置,当用户选择一个位置然后使用位置经纬度获取记录并将其显示到 ListView。
现在的问题是每当用户点击 清除按钮 (X) 的 PlaceAutocompleteFragment 我想要清除 ListView 项目我需要听清除按钮 onClick?怎么做到的?
任何帮助将不胜感激。
autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
@Override
public void onPlaceSelected(Place place) {
LatLng latLng=place.getLatLng();
//hit web service, response parsing and add it to listview.
}
@Override
public void onError(Status status) {
Log.i(TAG, "An error occurred: " + status);
}
});
查看 PlaceAutocompleteFragment
的源代码,我找到了那些视图 ID 并设置了一个 onClickListener
,如下所示:
autocompleteFragment.getView().findViewById(R.id.place_autocomplete_clear_button)
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// example : way to access view from PlaceAutoCompleteFragment
// ((EditText) autocompleteFragment.getView()
// .findViewById(R.id.place_autocomplete_search_input)).setText("");
autocompleteFragment.setText("");
view.setVisibility(View.GONE);
}
});
上面的回答没有解决我的问题。
我可以用一个技巧解决它:)
autocompleteFragment.getView().findViewById(R.id.place_autocomplete_clear_button).setPadding(0,0,0,55555);
我在 activity 的 onCreate
中创建了 findViewById
,但出现以下错误
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
因为片段还没有initialized/visible。我将侦听器移到 setOnPlaceSelectedListener
中,现在工作正常。
autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
@Override
public void onPlaceSelected(Place place) {
homeAddressPlaceID = place.getId();
Log.i(TAG, "Place: " + place.getName() + ", " + place);
autocompleteFragment.getView().findViewById(R.id.places_autocomplete_clear_button)
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
autocompleteFragment.setText("");
homeAddressPlaceID = "";
}
});
}
@Override
public void onError(Status status) {
Log.i(TAG, "An error occurred: " + status);
}
});
我在我的项目中使用 Google Places API for Android - PlaceAutocompleteFragment API 来搜索位置,当用户选择一个位置然后使用位置经纬度获取记录并将其显示到 ListView。
现在的问题是每当用户点击 清除按钮 (X) 的 PlaceAutocompleteFragment 我想要清除 ListView 项目我需要听清除按钮 onClick?怎么做到的?
任何帮助将不胜感激。
autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
@Override
public void onPlaceSelected(Place place) {
LatLng latLng=place.getLatLng();
//hit web service, response parsing and add it to listview.
}
@Override
public void onError(Status status) {
Log.i(TAG, "An error occurred: " + status);
}
});
查看 PlaceAutocompleteFragment
的源代码,我找到了那些视图 ID 并设置了一个 onClickListener
,如下所示:
autocompleteFragment.getView().findViewById(R.id.place_autocomplete_clear_button)
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// example : way to access view from PlaceAutoCompleteFragment
// ((EditText) autocompleteFragment.getView()
// .findViewById(R.id.place_autocomplete_search_input)).setText("");
autocompleteFragment.setText("");
view.setVisibility(View.GONE);
}
});
上面的回答没有解决我的问题。 我可以用一个技巧解决它:)
autocompleteFragment.getView().findViewById(R.id.place_autocomplete_clear_button).setPadding(0,0,0,55555);
我在 activity 的 onCreate
中创建了 findViewById
,但出现以下错误
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
因为片段还没有initialized/visible。我将侦听器移到 setOnPlaceSelectedListener
中,现在工作正常。
autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
@Override
public void onPlaceSelected(Place place) {
homeAddressPlaceID = place.getId();
Log.i(TAG, "Place: " + place.getName() + ", " + place);
autocompleteFragment.getView().findViewById(R.id.places_autocomplete_clear_button)
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
autocompleteFragment.setText("");
homeAddressPlaceID = "";
}
});
}
@Override
public void onError(Status status) {
Log.i(TAG, "An error occurred: " + status);
}
});