Я пытаюсь показать изображения из Firebase в виде карусели, используя ViewPager и Picasso, но изображения не отображаются - PullRequest
0 голосов
/ 04 июня 2019

Изображения с FireBase не отображаются

Я перепробовал все, что мог, в конце концов, мне пришлось задать вопрос

Вот мой класс адаптера

public class ViewPagerAdapter extends PagerAdapter {

Context context;
public  String[] imageUrls ;

public ViewPagerAdapter(Context context,String[] imageUrls){
this.context=context;
this.imageUrls=imageUrls;
}

@Override
public int getCount() {
    return imageUrls.length;
}

@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
    return view==o;
}

@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
    ImageView imageView = new ImageView(context);
    Picasso.get()
            .load(imageUrls[position])
            .fit()
            .centerCrop()
            .into(imageView);
    container.addView(imageView);

    return imageView;



}

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

вот мой другой класс, откуда я получаю данные из базы данных

private void loadImages(String insideHostelID) {


    ImageDatabaseReference.child(insideHostelID).child("INSIDE_PICTURES").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            Inside_location inside_location=dataSnapshot.getValue(Inside_location.class) ;
          //  Toast.makeText(hostelDetails.this,""+ inside_location.getPIC9(),Toast.LENGTH_SHORT).show();

            imageUrls = new String[]{
                    inside_location.getPIC1(), inside_location.getPIC2(),
                    inside_location.getPIC3(), inside_location.getPIC4(),
                    inside_location.getPIC5(), inside_location.getPIC6(),
                    inside_location.getPIC7(), inside_location.getPIC8(),
                    inside_location.getPIC9(), inside_location.getPIC10(),
            };
            viewPagerAdapter = new ViewPagerAdapter(getBaseContext(),imageUrls);
        }
        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
        }
    });
    insideHostelImage.setAdapter(viewPagerAdapter);
}

не знаю в чем проблема

1 Ответ

1 голос
/ 04 июня 2019

Вы настраиваете адаптер до получения ответа от firebase. Только что модифицированный код, как показано ниже.

private void loadImages(String insideHostelID) {    
    ImageDatabaseReference.child(insideHostelID).child("INSIDE_PICTURES").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            Inside_location inside_location=dataSnapshot.getValue(Inside_location.class) ;
          //  Toast.makeText(hostelDetails.this,""+ inside_location.getPIC9(),Toast.LENGTH_SHORT).show();

            imageUrls = new String[]{
                    inside_location.getPIC1(), inside_location.getPIC2(),
                    inside_location.getPIC3(), inside_location.getPIC4(),
                    inside_location.getPIC5(), inside_location.getPIC6(),
                    inside_location.getPIC7(), inside_location.getPIC8(),
                    inside_location.getPIC9(), inside_location.getPIC10(),
            };
            viewPagerAdapter = new ViewPagerAdapter(getBaseContext(),imageUrls);
            insideHostelImage.setAdapter(viewPagerAdapter);
        }
        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
        }
    });
}

И добавить / заменить метод ниже в классе адаптера.

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