2016-08-22 3 views
0

У меня есть изображение слайдера с использованием ViewPager. Для этого я хочу, чтобы изображения были динамическими. Glide легко, но я думаю, что не использую его правильно. Вот что я пытаюсь сделать.Как использовать скольжение, чтобы загрузить изображение в drawable?

//Initialize by default Images 
private static final Integer[] IMAGES = {R.drawable.image1,R.drawable.image2}; 

// Load images into Drawables using Glide 
     Glide.with(this) 
       .load("https://google.com/someImage1.jpg") 
        .error(R.drawable.image1) 
        .into(R.drawable.image1); 
     Glide.with(this) 
       .load("https://google.com/someImage2.jpg") 
        .error(R.drawable.image2) 
        .into(R.drawable.image2); 

// Set Again 
IMAGES[0]= R.drawable.image1; 
IMAGES[1]= R.drawable.image2; 

Но .into(java.lang.Integer) не определена, и я знаю, что. Но я хочу что-то, что решит мою проблему. У меня есть слайдер. В этом мне нужно передать изображения как чертежи или что-то в этом роде. Загрузка изображения будет осуществляться адаптером. Насколько я знаю. Есть ли способ загрузить слайд-изображения в drawable.

Также наилучшим способом поймать или сохранить изображения локально, чтобы при отсутствии подключения к Интернету все же слайдер работал плавно.

Вот мой Adapater

public class MainPageSlideImageAdapter extends PagerAdapter { 
    private ArrayList<Integer> IMAGES; 
    private LayoutInflater inflater; 
    private Context context; 


    public MainPageSlideImageAdapter(Context context,ArrayList<Integer> IMAGES) { 
     this.context = context; 
     this.IMAGES=IMAGES; 
     inflater = LayoutInflater.from(context); 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     container.removeView((View) object); 
    } 

    @Override 
    public int getCount() { 
     return IMAGES.size(); 
    } 

    @Override 
    public Object instantiateItem(ViewGroup view, int position) { 
     View imageLayout = inflater.inflate(R.layout.main_page_slidingimages, view, false); 

     assert imageLayout != null; 
     final ImageView imageView = (ImageView) imageLayout 
       .findViewById(R.id.image); 

     imageView.setImageResource(IMAGES.get(position)); 
     view.addView(imageLayout, 0); 

     return imageLayout; 
    } 

    @Override 
    public boolean isViewFromObject(View view, Object object) { 
     return view.equals(object); 
    } 

    @Override 
    public void restoreState(Parcelable state, ClassLoader loader) { 
    } 

    @Override 
    public Parcelable saveState() { 
     return null; 
    } 

} 
+0

Когда вы получаете сообщение об ошибке, что метод не определен, всегда проверяйте документацию. Ссылки «R.drawable» являются целыми числами. В документации ясно показано, что ImageView загружается в –

+0

Спасибо. Я понимаю и читаю документацию. Пожалуйста, прочитайте детали, которые я добавил. – impossible

ответ

-1

Вместо сохранения изображения в памяти вместо этого сохраните адрес.

private static final String[] IMAGES = {"https://google.com/someImage1.jpg", "https://google.com/someImage2.jpg"}; 

Затем загрузите изображение, когда вы instantiateItem

@Override 
public Object instantiateItem(ViewGroup view, int position) { 
    View imageLayout = inflater.inflate(R.layout.main_page_slidingimages, view, false); 
    assert imageLayout != null; 
    final ImageView imageView = (ImageView) imageLayout.findViewById(R.id.image); 
    Glide.with(context) 
     .load(IMAGES.get(position)) 
     .error(R.drawable.image1) 
     .into(imageView);  
    view.addView(imageLayout, 0);  
    return imageLayout; 
} 

Кроме того, скольжение обеспечивает кэширование памяти и диска. Это означает, что он должен иметь возможность показывать изображения, даже если нет Интернета.

+0

Я это понимаю. Но у меня есть слайдер. В этом мне нужно передать изображения как чертежи или что-то в этом роде. Загрузка изображения будет осуществляться адаптером. Насколько я знаю. – impossible

+0

@ArewegoodQ Можете ли вы показать код адаптера? – Joshua

+0

Несомненно. Посмотрите на конструктор адаптера, где я работаю с целыми изображениями. – impossible

0

вы должны обеспечить представление в .into() пожалуйста, просмотрите образец

макет образца

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <ImageView 
     android:id="@+id/myImage" 
     android:layout_width="100dp" 
     android:layout_height="100dp"/> 



</LinearLayout> 

Update

@Override 
    public Object instantiateItem(ViewGroup view, int position) { 
     View imageLayout = inflater.inflate(R.layout.main_page_slidingimages, view, false); 

     assert imageLayout != null; 
     final ImageView imageView = (ImageView) imageLayout 
       .findViewById(R.id.image); 

     Glide.with(this) 
       .load(IMAGES.get(position)) 
        .error(R.drawable.image2) 
        .into(imageView); 
     //imageView.setImageResource(); 
     view.addView(imageLayout, 0); 

     return imageLayout; 
    } 
+0

Я понимаю это. Но у меня есть слайдер. В этом мне нужно передать изображения как чертежи или что-то в этом роде. Загрузка изображения будет осуществляться адаптером. Насколько я знаю. – impossible

+0

@ArewegoodQ обновил мой ответ из вашего выше кода. Я верю, что вы отправляете массив изображений в адаптер, поэтому я получаю изображение из массива и загружаю его в изображение с помощью скольжения, пожалуйста, проверьте, работает ли оно для вас. – SaravInfern

0

imageView.setImageResource просто необходимо заменить на вызов Glide.

Или используйте ArrayAdapter of Strings для Urls, которые вы хотите загрузить. Я не думаю, что вы можете «перезаписать» извлечение из Glide

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

  • Нет связанных вопросов^_^