0

Привет Я пытаюсь показать некоторые изображения в ViewPager тех нужно быть скачать, прежде чем шоу, а также я должен показать прогресс бар во время загрузки. Может кто-нибудь, пожалуйста, помогите мне разобраться. Кроме того, я пытаюсь использовать весь вид viewpager. это хорошая практика. Ниже мой кодAndroid скачать список изображений и показа изображений в 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(); 
    } 

} 

}

он дает мне ошибку в подсчете Досталось и не позволяют добавлять прогресс бар в адаптере.

+0

Приложите отчет logcat (stacktrace), чтобы он смог отладить проблему. –

+0

Привет, в логарифме ничего нет, дело в том, что оно работает, но не показывает никаких изображений :( – user2423768

ответ

0

Изменения порядка код из

myPager.setAdapter(adapter); 
adapter.change(imageArra); 

в

adapter.change(imageArra); 
myPager.setAdapter(adapter); 

Потому что при установке адаптера, адаптер getCount будет называться, пока вы только назначить список после этого.
Update
Вот еще некоторые замечания, которые я думаю, вы должны проверить:

  1. убедитесь, что imageArra не пуст и изображения path правильно.
  2. Вы должны добавить фиксированную высоту для myfivepanelpager.
  3. Не храните mContext в ViewPagerAdapter, вам не нужно.
  4. В instantiateItem: ImageView iv = new ImageView(mContext); не использовать контекст приложения, используйте container.getContext()
  5. Вам не нужен этот new calc_stanica().execute(path, container, iv);, потому что уже используют Glide
  6. Изменить 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)
    Если у вас есть проблемы, которые скользят нагрузку не правильное изображение, читайте this
  7. ((ViewPager) container).addView(iv, 0);, я не уверен в этом, но я думаю, что это должно быть ((ViewPager) container).addView(iv);
+0

Спасибо большое решение но он ничего не показывает. не могли бы вы посоветовать мне, как показать это, если хотите, я могу поделиться всем своим кодом :-) – user2423768

+0

@ user2423768, я обновляю базу ответов на ваш код, пожалуйста, проверьте. Если он все еще не работает, я сейчас не в курсе. – Minhtdh

+0

спасибо, но не повезло. Любые способы вы можете дать мне представление о моем запросе, в котором у меня есть список, который мне нужно показать как обычный список, и этот список содержит список изображений, которые я должен показывать по горизонтали. Я пробовал много, но не повезло. Большое спасибо вам драгоценное время и решение :) – user2423768

Смежные вопросы