所以,我有一个自定义的 GalleryAdapter,我在Async ImageLoading Library 的帮助下通过 ajax 调用(lib name is Aquery)
从网络流式传输图像。
对于我从网络上流式传输的图像,我也有一个相应的音轨,每个图像都有,因此在同时加载图像时必须异步调用。
IE
图片文件-> http://myserver.com/img1.png
第 1 点,我在我的习惯中做这整件事
ImageAdapter
。我应该从我的getView
方法中调用另一个线程吗?我在做什么-> 该
getView()
方法被调用了2 次我可以控制它只被调用一次,因为它不应该因为轨道根据它的调用被多次播放?
这是我的自定义适配器类
private class MainImageAdapter extends ArrayAdapter<String> {
List<String> pagedImages;
private Context context;
public MainImageAdapter(Context context,int resid, List<String> objects ) {
super( context, resid, objects );
this.context=context;
this.pagedImages=objects;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return pagedImages.size();
}
@Override
public String getItem(int position) {
// TODO Auto-generated method stub
return pagedImages.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return pagedImages.get(position).hashCode();
}
@SuppressWarnings("deprecation")
public View getView(final int position, View convertView, ViewGroup parent) {
View v;
if ( convertView == null ) {
v = LayoutInflater.from(context).inflate(R.layout.imagebook, parent, false);
} else {
v = convertView;
}
System.out.println("getview called with"+position);
final ImageView im=(ImageView) v.findViewById(R.id.pagedimage);
positionMusic=position;
aq.id(im).image(pagedImages.get(position), true, true, 0, 0, new BitmapAjaxCallback(){
@Override
public void callback(String url, ImageView iv, Bitmap bm, AjaxStatus status){
iv.setImageBitmap(bm);
//This should be called only once somehow
mPlayer = MediaPlayer.create(MainActivity.this, Uri.parse(pagedImages.get(position).replace(".png", ".mp3")));
mPlayer.start();
}
});
return v;
}
}