У меня странная проблема. Вот код:
public class TaxiDetails extends Activity{
ArrayList<Bus> listBus = new ArrayList<Bus>();
ArrayList<Taxi> listTaxi = new ArrayList<Taxi>();
TextView detalji, title;
ImageView backBtn;
String strType;
StringBuilder builder = new StringBuilder();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.numbers_details);
detalji = (TextView) findViewById(R.id.txtNumbDetails);
title = (TextView) findViewById(R.id.txtTitleNumbers);
detalji.setTypeface(Typeface.DEFAULT_BOLD);
Typeface TF = Typeface.createFromAsset(getAssets(), "fonts/Roboto-Black.ttf");
backBtn = (ImageView) findViewById(R.id.backBtn);
title.setTypeface(TF);
Intent in = getIntent();
strType = in.getStringExtra("type");
if (strType.equals("TAXI")){
listTaxi = (ArrayList<Taxi>) in.getSerializableExtra("TAXI");
title.setText("Taxi");
} else if (strType.equals("BUS")){
listBus = (ArrayList<Bus>) in.getSerializableExtra("BUS");
title.setText("BUS");
}
if (listBus != null) {
for (int i = 0; i < listBus.size(); i++) {
builder = new StringBuilder();
String naslov = listBus.get(i).getTitle();
String opis = listBus.get(i).getDescription();
builder.append(naslov);
builder.append("\n");
builder.append(Html.fromHtml(opis));
builder.append("\n");
}
}
if (listTaxi != null) {
for (int i = 0; i < listTaxi.size(); i++) {
builder = new StringBuilder();
String naslov = listTaxi.get(i).getTitle();
String opis = listTaxi.get(i).getDescription();
builder.append(naslov);
builder.append("\n");
builder.append(Html.fromHtml(opis));
builder.append("\n");
}
}
detalji.setText(builder.toString().trim());
}
}
Я передаю массив из предыдущего действия. Либо массив объектов Такси или Автобус, в зависимости от того, что выбирает пользователь. Однако для такси это работает отлично. Для Bus он показывает только последний объект массива, хотя отладчик показывает, что listBus содержит 2 объекта. Я использую ту же функцию listBus в Google Map, и там она работает для отображения местоположения всех объектов, так почему же она здесь не работает?
1 ответ
Вы создаете новый StringBuilder
на каждой итерации цикла. Это не должно было работать даже для Taxis
, поскольку вы делаете там то же самое.
Просто переместите приведенный ниже оператор за пределы цикла for:
builder = new StringBuilder();
Или вам лучше удалить присвоение, поскольку вы уже инициализировали его в объявлении переменной экземпляра. Значит, вам здесь это не нужно.
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.