2017-04-13 3 views
0

オブジェクトのリスト全体を表示しようとしていますが、最後のリストのみを表示しています。androidのオブジェクトリストを表示

私が旅行に使うコードですが、私にはリストの最後だけが表示されます。私の悪い英語のため申し訳ありません

:(

コード:

if(!L.isEmpty()){ 
     for(Iterator<Bits> i = L.iterator(); i.hasNext();) { 
      Bits item = i.next(); 
      imageBit.setImageBitmap(BitmapFactory.decodeFile(item.getbImage())); 
      nameBit.setText(item.getbText()); 
      System.out.println(item); 
     } 


    } 
+0

私はimageBitがただ1つのImageViewであると仮定します。その画像のビットマップは遅延なく各ループで上書きされるため、最後の画像しか見ることができません。 – jeprubio

+0

ありがとうございました。それぞれを時間(秒)で区切って表示したい場合、それは可能でしょうか? – Exbaby

答えて

0

いくつかの遅延を持つすべての画像を表示するには、これを試してみてください。あなたのクラスで

次VARS作成:

final Handler handler = new Handler(); 
private int currentPosition = 0; 

をそしてのonCreate内の画像の表示を開始するには、以下のメソッドを呼び出して、onResumeまたはあなたはそれがすべて起動したいとき:

showNextImage(); 

AntのshowNextImageのためのコードのようなものでなければなりません:

private void showNextImage() { 
    // loads the image at position currentPosition 
    Bits item = L.get(currentPosition); 
    imageBit.setImageBitmap(BitmapFactory.decodeFile(item.getbImage())); 
    nameBit.setText(item.getbText()); 
    System.out.println(item); 

    currentPosition++; // updates the current position 
    if (L.size() > currentPosition) { // more images to show? 
     // loads the next image after some delay 
     handler.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       showNextImage(); 
      } 
     }, 1000); // in millis, 1000 for one second delay 
    } 
} 

私はいくつかの共同を追加しました明確にするためだけのものです。削除することができます。

これはうまくいくはずです。

+0

ありがとう、私は例を助けた、私は今、ビットの名前を示すビットのイメージを表示することに従う必要があるので、同じビットなど、あなたの助けてくれてありがとう! – Exbaby

1

あなたはnameBit TextViewのための新しいテキスト値ごとに反復を設定しているからですImageViewのための同じので、ループはその終わりに到達したとき、。。それは、テキストの最後の項目名の値と画像のための同じを割り当ておそらく、テキストのために次に何をする必要があります。

if(!L.isEmpty()){ 
    StringBuilder builder = new StringBuilder(); 
    for(Iterator<Bits> i = L.iterator(); i.hasNext();) { 
    Bits item = i.next(); 
    imageBit 
     .setImageBitmap(
     BitmapFactory.decodeFile(item.getbImage()) 
    ); 
    builder.append(item.getbText()).append("\n"); 
    } 
    String resultingText= builder.toString(); 
    nameBit.setText(resultingText); 
    System.out.println(resultingText); 
} 

これはあなたのTextView内のすべてのテキスト値を表示します01。ところで、imageBitのこの実装では、最後のイメージだけが表示されます。 だから私はあなたが適切にアーキテクチャを選択していないと仮定します。 ListViewまたはRecyclerViewのマニュアルを参照してください。このビューの目的は、オブジェクトのリストを適切に実装する場合に表示することです。

+0

あなたの答えをありがとう、と私は時間(秒)で区切られたそれぞれを見せたい場合は、それを行うことができますか? @Eugene Laminskiy – Exbaby

+0

リストを個別に表示するには、ListViewまたはRecycleViewを実装する必要があります。 –

関連する問題