2017-01-01 5 views
0

Я пытаюсь загрузить изображение и текст на слайдер из firebase в daimajia слайдер, но ничего не отображается, я использую FirebaseRecyclerAdapter, вот как это делается в следующем методе:.Изображение Слайдер (Daimajia) с использованием Firebase

Но я объявил Уже вступил

sliderShow = (SliderLayout) findViewById(R.id.slider); 

в onCreate методом

public void GetAdverts() 
    { 


     FirebaseRecyclerAdapter<Advert,MainActivity.EventViewHolder> firebaseRecyclerAdapter_ = new FirebaseRecyclerAdapter<Advert, MainActivity.EventViewHolder>(Advert.class, 
       R.layout.slider_image, 
       MainActivity.EventViewHolder.class, 
       mDatabase) { 
      @Override 
      protected void populateViewHolder(MainActivity.EventViewHolder viewHolder, final Advert model, final int position) { 

      try{ 


       HashMap<String,String> url_maps = new HashMap<String, String>(); 
       List<Advert> itemlist = new ArrayList<>(); 


       url_maps.put(model.getTitle(), model.getImageAdvert()); 


       for(String name : url_maps.keySet()){ 
        TextSliderView textSliderView = new TextSliderView(getApplicationContext()); 
        // initialize a SliderLayout 
        textSliderView 
          .description(name) 
          .image(url_maps.get(name)); 
        //add your extra information 
        textSliderView.bundle(new Bundle()); 
        textSliderView.getBundle() 
          .putString("extra",name); 
        textSliderView.setOnSliderClickListener(new BaseSliderView.OnSliderClickListener() { 
         @Override 
         public void onSliderClick(BaseSliderView slider) { 

          Toast.makeText(getApplicationContext(), 
            "News Details ",Toast.LENGTH_LONG).show(); 
         } 
        }); 

        sliderShow.addSlider(textSliderView); 
       } 

       // sliderShow.addSlider(textSliderView); 
       sliderShow.setPresetTransformer(SliderLayout.Transformer.Accordion); 
       sliderShow.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom); 
       sliderShow.setCustomAnimation(new DescriptionAnimation()); 
       sliderShow.setDuration(10000); 


      } 
      catch (Exception e){ 

       e.printStackTrace(); 
      } 


      } 
     }; 


    } 

, где я не прав, пожалуйста.

Мой обновленный код.

void Slider(){ 

    mDatabase.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      Map<String, Advert> td = new HashMap<String, Advert>(); 


      HashMap<String,String> url_maps = new HashMap<String, String>();   

      ArrayList<Advert> values = new ArrayList<>(td.values()); 

      // List<String> keys = new ArrayList<String>(td.keySet()); 

      for (Advert ad: values) { 

       // Toast.makeText(getApplicationContext(),""+ad.getImageAdvert(),Toast.LENGTH_LONG).show(); 
       url_maps.put(ad.getTitle(),ad.getImageAdvert()); 


      } 

      for(String name : url_maps.keySet()){ 
       TextSliderView textSliderView = new TextSliderView(getApplicationContext()); 
       // initialize a SliderLayout 
       textSliderView 
         .description(name) 
         .image(url_maps.get(name)); 
       //add your extra information 
       textSliderView.bundle(new Bundle()); 
       textSliderView.getBundle() 
         .putString("extra",name); 
       textSliderView.setOnSliderClickListener(new BaseSliderView.OnSliderClickListener() { 
        @Override 
        public void onSliderClick(BaseSliderView slider) { 

         Toast.makeText(getApplicationContext(), 
           "Advertise Here ",Toast.LENGTH_LONG).show(); 
        } 
       }); 

       sliderShow.addSlider(textSliderView); 
      } 

      // sliderShow.addSlider(textSliderView); 
      sliderShow.setPresetTransformer(SliderLayout.Transformer.Accordion); 
      sliderShow.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom); 
      sliderShow.setCustomAnimation(new DescriptionAnimation()); 
      sliderShow.setDuration(10000); 


     } 



     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

    sliderShow = (SliderLayout) findViewById(R.id.slider); 
} 

Мои объявления класса.

public class Advert { 

public String ImageAdvert; 
public String Title; 


public Advert() { 

    // left out for firebase ... 

} 


public String getImageAdvert() { 
    return ImageAdvert; 
} 

public void setImageAdvert(String imageAdvert) { 
    ImageAdvert = imageAdvert; 
} 

public String getTitle() { 
    return Title; 
} 

public void setTitle(String title) { 
    Title = title; 
} 
} 

ответ

1

FirebaseRecyclerAdapter Мент для установки данных внутри FirebaseRecycler!

Если вы хотите просто получить данные из DatabaseReference, вы должны использовать Listeners.

FirebaseDatabse - Retrieving Data

Для того, чтобы считывать данные на пути и слушать изменения, использовать метод() oraddListenerForSingleValueEvent() в addValueEventListener добавить ValueEventListener к DatabaseReference.

(Существует также третий слушатель для ребенка - ChildEventListener)

+0

@ yotam, да, я понимаю вашу концепцию, но я тоже попробовал это проверить мой пост, я обновил его, но он также показывает нуль –

+0

Загрузить рекламу и код MainActivity.EventViewHolder. ТАКЖЕ убедитесь, что вы ссылаетесь на нужное место и что никаких проблем с правилами нет. –

+0

Я использовал 'addValueEventListener()', но он также показывает null man –

0

Я предлагаю вам использовать два вида деятельности (первая активность = VoidActivity и второй активности = MainActivty), для VoidActivty брать данные из firebase базы данных, то отправьте его в MainActivity с помощью SharedRefrence или intent.putString

0

Предлагаю вам использовать два действия (первая активность = VoidActivity и вторая активность = MainActivty), VoidActivty извлекает данные из базы данных firebase и отправляет их в MainActivity с использованием SharedPefrence или использует намерение .putString(), он работает для меня