Разбейте свою проблему на более мелкие кусочки. Ваш первый выбор довольно сложен для чтения.
1) Вам нужно что-то сделать для listRoutes(i)
. Ввод, который вы хотите рассмотреть, является "A"
, "B"
и "C"
.
ПРИМЕЧАНИЕ. Ваша исходная программа имела избыточную переменную route
, определенную где-то еще за пределами блока кода, который вы показали. Упрощение кода путем разбиения его на небольшие методы, которые выполняют только одно, поможет вам избежать подобных проблем.
2) Эти буквы соответствуют вашим mipmap
ресурсам (bus_gaza
, brunei_bus
и commercial_bus
).
3) Затем вы хотите поместить где-нибудь маркер, основываясь на значении в (1).
Создайте несколько методов для обработки всего этого, например:
public int toResourceId(String route) {
int resourceId;
switch (route) {
case "A":
resourceId = R.mipmap.bus_gaza;
break;
case "B":
resourceId = R.mipmap.brunei_bus;
break;
case "C":
default:
resourceId = R.mipmap.commercial_bus;
}
return resourceId;
}
, а затем сделать что-то с resourceId
, где start_location
предполагается переменной класса, поскольку ее нет нигде в вашем коде (подумайте, как назвать ее mStartLocation
)
public void mark(int resourceId) {
mCurrent = mMap.addMarker(new MarkerOptions().position(start_location)
.title("Arrival Time of Shuttle: " + Coordinates[0])
.icon(BitmapDescriptorFactory.fromResource(resourceId)));
}
Если вы хотите зарегистрировать начальное и конечное местоположение или информацию о текущем местоположении, как вы упомянули в своем примере, почему бы не использовать Android Log
? Вы можете добавить логику в метод mark
:
Log.i("YOUR_TAG", "Whatever you want to log");
Тогда большая часть вашей программы становится
mark(toResourceId(listRoutes.get(i)))
Обратите внимание, что в этом примере регистр "C"
также является регистром по умолчанию, и любое значение, отличное от "A"
или "B"
, будет обрабатываться как "C"
.