2

奇妙な問題があります。コードは次のとおりです。

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());
}
}

前のアクティビティから配列を渡します。ユーザーの選択に応じて、Taxi または Bus オブジェクトの配列。ただし、タクシーの場合、これは完全に機能します。Bus の場合、listBus に 2 つのオブジェクトが含まれていることがデバッガーで示されていても、配列の最後のオブジェクトのみが表示されます。私は同じ listBus iN Google Map アクティビティを使用しており、すべてのオブジェクトの位置を表示するために機能しますが、なぜここで機能しないのでしょうか?

4

1 に答える 1

5

StringBuilderループの反復ごとに新しいものを作成しています。Taxisあなたはそこで同じことをしているので、それもうまくいかないはずです。

以下のステートメントを for ループの外側に移動するだけです。

builder = new StringBuilder();

または、インスタンス変数宣言で既に初期化されているため、割り当てを削除することをお勧めします。だからここでは必要ありません。

于 2013-07-04T06:32:59.877 に答える