[英]Android download list of images and show images in viewpager with progress dialog
嗨,我正在嘗試在viewPager中顯示一些圖像,這些圖像需要在顯示前下載,並且我還需要在下載時顯示進度條。 誰能幫我解決這個問題。 我也試圖以所有viewpager適配器形式列表視圖適配器。 這是一個好習慣嗎? 下面是我的代碼
這是我的列表適配器
public class adapter extends ArrayAdapter<FriendList> {
private Context context;
private List<FriendList> frndList;
ProgressDialog mProgressDialog;
LinearLayout inHorizontalScrollView;
View view;
public adapter(Context context, int resource, List<FriendList> objects) {
super(context, resource, objects);
this.context = context;
this.frndList = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.item_file, parent, false);
FriendList friensList = frndList.get(position);
Log.v("=====================","======111111========"+friensList);
Friend temp = friensList.getFriend();
Log.v("=====================","======temp========"+temp);
//inHorizontalScrollView = (LinearLayout)view.findViewById(R.id.inhorizontalscrollview);
List<String> imageArra = temp.getImageData();
Log.v("=====================","======imageArra========"+imageArra.size());
ViewPager myPager = (ViewPager) view.findViewById(R.id.myfivepanelpager);
ViewPagerAdapter adapter = new ViewPagerAdapter(context);
myPager.setAdapter(adapter);
adapter.change(imageArra);
return view;
}
}
這是我的viewpager適配器
public class ViewPagerAdapter extends PagerAdapter {
/* Adapter activity;
int imageArray[];
private Context context;
public ViewPagerAdapter( Context context, int[] imgArra) {
imageArray = imgArra;
//activity = act;
context = context;
}*/
ProgressDialog mProgressDialog;
private List<String> mPaths;
private Context mContext;
public ViewPagerAdapter(Context cx) {
mContext = cx.getApplicationContext();
}
public void change(List<String> paths) {
mPaths = paths;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mPaths.size();
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView iv = new ImageView(mContext);
String path = mPaths.get(position);
Log.v("=====================","======path====11===="+path);
new calc_stanica().execute(path, container, iv);
try {
Bitmap bitmap = Glide.with(mContext).load(path).asBitmap().into(-1, -1).get();
//Bitmap bm = BitmapFactory.decodeFile(mPaths.get(position));
iv.setImageBitmap(bitmap);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
((ViewPager) container).addView(iv, 0);
return iv;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public boolean isViewFromObject(View view, Object obj) {
// TODO Auto-generated method stub
return view == (View) obj;
}
private class calc_stanica extends AsyncTask<Object, Void, Bitmap> {
ViewGroup container;
ImageView iv;
/*@Override
protected void onPreExecute() {
super.onPreExecute();
// Create a progressdialog
mProgressDialog = new ProgressDialog(mContext);
// Set progressdialog title
mProgressDialog.setTitle("Download Image Tutorial");
// Set progressdialog message
mProgressDialog.setMessage("Loading...");
mProgressDialog.setIndeterminate(false);
// Show progressdialog
mProgressDialog.show();
}*/
@Override
protected Bitmap doInBackground(Object... params) {
//ArrayList<Bitmap> result = new ArrayList<Bitmap>();
String pass = (String) params[0];
container = (ViewGroup) params[1];
iv = (ImageView) params[2];
//View str = (View) params[1];
//Context ctx = (Context) params[2];
//Log.v("================", "===passed========" + passed);
Bitmap bitmap = null;
try {
// Download Image from URL
//InputStream input = new java.net.URL(imageURL).openStream();
// Decode Bitmap
bitmap = Glide.with(mContext).load(pass).asBitmap().into(-1, -1).get();
} catch (Exception e) {
e.printStackTrace();
}
//int intArray[] = new int[bitmap.getWidth()*bitmap.getHeight()];
//result.add(bitmap);
//Log.v("================", "===result========" + result);
//Some calculations...
return bitmap; //return result
}
//*protected Bitmap doInBackground(String... URL) {
/* String imageURL = URL[0];
Bitmap bitmap = null;
ArrayList<Bitmap> list;
try {
// Download Image from URL
//InputStream input = new java.net.URL(imageURL).openStream();
// Decode Bitmap
bitmap = Glide.with(getApplicationContext()).load(imageURL).asBitmap().into(-1, -1).get();
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;*/
@Override
protected void onPostExecute(Bitmap result) {
if(result != null) {
iv.setImageBitmap(result);
((ViewPager)container).addView(iv, 0);
}
//mProgressDialog.dismiss();
}
}
}
它在獲取計數時給了我錯誤,並且不允許在適配器中添加進度條。
從更改代碼順序
myPager.setAdapter(adapter);
adapter.change(imageArra);
至
adapter.change(imageArra);
myPager.setAdapter(adapter);
因為設置適配器時,將在僅分配列表之后調用適配器的getCount
。
更新資料
我認為您應該檢查以下更多說明:
imageArra
不為空並且圖像path
正確。 myfivepanelpager
添加一個固定的高度。 mContext
存儲在ViewPagerAdapter
,您不需要。 instantiateItem
: ImageView iv = new ImageView(mContext);
不要使用應用程序上下文,請使用container.getContext()
new calc_stanica().execute(path, container, iv);
因為已經使用了Glide
Bitmap bitmap = Glide.with(mContext).load(path).asBitmap().into(-1, -1).get(); //Bitmap bm = BitmapFactory.decodeFile(mPaths.get(position)); iv.setImageBitmap(bitmap);
Bitmap bitmap = Glide.with(mContext).load(path).asBitmap().into(-1, -1).get(); //Bitmap bm = BitmapFactory.decodeFile(mPaths.get(position)); iv.setImageBitmap(bitmap);
Glide.with(mContext).load(path).asBitmap().into(iv)
((ViewPager) container).addView(iv, 0);
,對此我不確定,但我認為應該是((ViewPager) container).addView(iv);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.