2013-12-17 146 views
1

我的ListView有多個項目。每個商品有TextView和兩個ImageView。我通過使用自定義適配器實現了這一點。我的ListView中的每個ImageView有5個圖像。如何在自定義適配器中的ImageView中反覆顯示5張圖像?我想在15秒的時間間隔內重複所有ImageView中的圖像。ListView的自定義適配器

public class CategoryAdapter extends BaseAdapter { 
    public Activity adapterActivity; 
    LayoutInflater adapterInflater; 
    ImageLoader compImageLoader; 
    List<Categary> list; 

    ArrayList<String> category = new ArrayList<String>(); 
    ArrayList<String> leftImage = new ArrayList<String>(); 
    ArrayList<String> rightImage = new ArrayList<String>(); 

    public CategoryAdapter(Activity activity, List<Categary> listData) { 
     list = listData; 
     adapterActivity = activity; 
     adapterInflater = (LayoutInflater) adapterActivity 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     compImageLoader = new ImageLoader(
       adapterActivity.getApplicationContext()); 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return list.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return position; 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    public class ViewHolder { 
     public ImageView lPic, rPic; 
     public TextView category; 
    } 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 

     View vi = convertView; 
     final ViewHolder holder; 
     if (vi == null) { 

      vi = adapterInflater.inflate(R.layout.categoryadapter, null); 
      holder = new ViewHolder(); 
      holder.lPic = (ImageView) vi.findViewById(R.id.imageView1); 
      holder.rPic = (ImageView) vi.findViewById(R.id.imageView2); 
      holder.category = (TextView) vi 
        .findViewById(R.id.textView_category); 
      vi.setTag(holder); 
     } else { 
      holder = (ViewHolder) vi.getTag(); 
     } 
     final Categary assingValue = list.get(position); 
     holder.lPic.setTag(assingValue.leftPicture); 
     holder.rPic.setTag(assingValue.rightPicture); 
     holder.category.setText(assingValue.id); 
     compImageLoader.DisplayImage(assingValue.leftPicture, holder.lPic); 
     compImageLoader.DisplayImage(assingValue.rightPicture, holder.rPic); 
     return vi; 
    }   
} 
+0

你可以使用一個animationdrawable。 – njzk2

+0

我如何在自定義適配器中實現animationdrawable?可能嗎?你能解釋我先生嗎? –

+0

看到我的答案。如果您需要更多關於如何將圖像置於動畫中的細節,請發佈一些代碼,說明您的圖像在我的整個適配器上方添加的適配器 – njzk2

回答

2

AnimationDrawable是,正確的組件:

在你getView(),我假設你有一個名爲ImageViewimageView。我還假設您有一系列代表圖像的Drawables:

AnimationDrawable animation = new AnimationDrawable(); 
for (Drawable image : images) { 
    animation.addFrame(image, 15 * 1000L); 
} 
imageView.setImageDrawable(animation); 
animation.start(); 

這可以根據您的圖像在應用程序中的可用方式進行更改。

+0

謝謝先生。我用你的代碼取決於我的應用程序。 –

0

可以在getView功能爲每個ListView項目產卵線程和圖像之間把15秒的延遲。

這樣的:

final ImageView iv = (ImageView) v.findViewById(R.id.myImageView); 
    new Thread(new Runnable() { 

     @Override 
     public void run() { 
      while(true){ 
       iv.setImageResource(iconID); 
       Thread.sleep(15000); 
      } 
     } 
    }).start(); 
0

讓我們說,你有你的圖片的ID在數組中。

int i=0; 
new CountDownTimer(15000, 1000) { 

    @Override 
    public void onTick(long millisUntilFinished) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onFinish() { 
     imgView.setImageResource(arrayIds[i]); 
    i++; 
     if(i==arrayIds.length) 
      i=0; 
     start();//restart the count down timer for another 15 seconds again 
    } 
}.start();