У меня есть действие в Картах Google, которое включает в себя окно поиска и просмотр списка доставок (который содержит LatLng).Когда я нажимаю на адрес внутри представления списка, я хочу, чтобы камера переместилась на этот адрес / маркер (все адреса внутри ListView помечены).
У меня есть этот метод внутри моего пользовательского адаптера ListAdapter, где япытался получить обновление камеры, но это не работает.Вот часть моего кода.
public class DeliveriesListAdapter extends ArrayAdapter<Delivery> implements View.OnClickListener {
private ArrayList<Delivery> deliveries;
public DeliveriesListAdapter(ArrayList<Delivery> data, Context context) {
super(context, R.layout.activity_row_item, data);
this.deliveries = data;
this.mContext = context;
}
@Override
public void onClick(View v) {
// TODO: on click, move camera to selected address on map.
int position = (Integer) v.getTag();
Delivery delivery = (Delivery) deliveries.get(position);
CameraUpdateFactory.newLatLng(delivery.getLatLng());
}
}
Список в нижней части экрана должен перемещать камеру к этому маркеру на карте.
Вот класс My Data, в котором хранится LatLng указанного элемента списка.
public class Delivery {
private String address;
private double distance, time;
private LatLng latLng;
private Place place;
public Delivery(Place place) {
address = place.getAddress().toString();
distance = -1;
time = -1;
latLng = place.getLatLng();
this.place = place;
}
Внутри моей активности в Картах Google:
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback{
private ArrayList<Delivery> deliveryList = new ArrayList<>();
// called inside onCreate(...)
private void setUpListView() {
deliveriesListView = findViewById(R.id.deliveries_listview);
adapter = new DeliveriesListAdapter(addressList, this);
deliveriesListView.setAdapter(adapter);
}
/**
* Used to add Delivery to a list view.
* @param delivery The Delivery containing the address to be added to the view to add the marker.
*/
private void addDeliveryToList(Delivery delivery) {
deliveryList.add(delivery);
adapter.notifyDataSetChanged();
}
редактировать: я знаю, что CameraUpdateFactory.newLatLng(delivery.getLatLng());
был неправ, я раньше связывался с ним и удалил то, что у меня было изначально.
РЕШЕНИЕ : мне удалось решить эту проблему, переписав свой настраиваемый адаптер списка в RecyclerViewAdapter, и мне удалось переместить метод Overriden onClick в мою активность в Картах, из-за чего у меня возникли проблемы.