Android-Image-Slider
Android-Image-Slider copied to clipboard
How to Use it with FIrebase RealTime DataBase
Tried With Custom Adapter didnot worked .
same problem bro
they should fix it
What problem... It worked for me... `sliderArrayList = new ArrayList<>();
db.collection(location)
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
Slider slider = document.toObject(Slider.class);
sliderArrayList.add(slider);
}
sliderV.setSliderAdapter(new SliderAdapter(getActivity(),sliderArrayList));
sliderV.startAutoCycle();
sliderV.setIndicatorAnimation(IndicatorAnimations.WORM);
sliderV.setSliderTransformAnimation(SliderAnimations.SIMPLETRANSFORMATION);
} else {
Log.w("FIREBASE", "Error getting documents.", task.getException());
}
}
});`
In Adapter Class
Glide.with(viewHolder.itemView) .load(sliderArrayList.get(position).getImageUrl()) .into(viewHolder.imageViewBackground);
bro but i want to display imageslider in recyclerView
This is my modified version which pulls slides from an external API:
Slider.java
public class Slider { public String img; public String txt;
Slider(String img, String txt) {
this.img = img;
this.txt = txt;
}
public String getImg() {
return img;
}
public void setImg(String img) {
this.img = img;
}
public String getTxt() {
return txt;
}
public void setTxt(String txt) {
this.txt = txt;
}
}
SliderAdapter.java
public class SliderAdapter extends SliderViewAdapter<SliderAdapter.SliderAdapterVH> {
Context context;
List<Slider> m;
SliderAdapter(List<Slider> m, Context context) {
this.m = m;
this.context = context;
}
@Override
public SliderAdapterVH onCreateViewHolder(ViewGroup parent) {
View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.image_slider_layout_item, null);
return new SliderAdapterVH(inflate);
}
@Override
public void onBindViewHolder(SliderAdapterVH viewHolder, int position) {
final Slider imgFeed = m.get(position);
Glide.with(viewHolder.itemView).load(imgFeed.getImg()).into(viewHolder.imageViewBackground);
viewHolder.textViewDescription.setText(imgFeed.getTxt());
}
@Override
public int getCount() {
return m.size();
}
class SliderAdapterVH extends SliderViewAdapter.ViewHolder {
View itemView;
ImageView imageViewBackground;
TextView textViewDescription;
public SliderAdapterVH(View itemView) {
super(itemView);
imageViewBackground = itemView.findViewById(R.id.iv_auto_image_slider);
textViewDescription = itemView.findViewById(R.id.tv_auto_image_slider);
this.itemView = itemView;
}
}
}
USE FIREBASE DATABASE
Adapter
public class SliderAdapter extends
SliderViewAdapter<SliderAdapter.SliderAdapterVH> {
private Context context;
private List<SliderItem> mSliderItems = new ArrayList<>();
public SliderAdapter(Context context) {
this.context = context;
}
public void renewItems(List<SliderItem> sliderItems) {
this.mSliderItems = sliderItems;
notifyDataSetChanged();
}
public void deleteItem(int position) {
this.mSliderItems.remove(position);
notifyDataSetChanged();
}
public void addItem(SliderItem sliderItem) {
this.mSliderItems.add(sliderItem);
notifyDataSetChanged();
}
@Override
public SliderAdapterVH onCreateViewHolder(ViewGroup parent) {
View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.image_slider_layout_item, null);
return new SliderAdapterVH(inflate);
}
@Override
public void onBindViewHolder(SliderAdapterVH viewHolder, final int position) {
SliderItem sliderItem = mSliderItems.get(position);
viewHolder.textViewDescription.setText(sliderItem.getDescription());
viewHolder.textViewDescription.setTextSize(16);
viewHolder.textViewDescription.setTextColor(Color.WHITE);
Glide.with(viewHolder.itemView)
.load(sliderItem.getImageUrl())
//.fitCenter()
.into(viewHolder.imageViewBackground);
viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "This is item in position " + position, Toast.LENGTH_SHORT).show();
}
});
}
@Override
public int getCount() {
//slider view count could be dynamic size
return mSliderItems.size();
}
public void add(String description) {
}
class SliderAdapterVH extends SliderViewAdapter.ViewHolder {
View itemView;
ImageView imageViewBackground;
ImageView imageGifContainer;
TextView textViewDescription;
public SliderAdapterVH(View itemView) {
super(itemView);
imageViewBackground = itemView.findViewById(R.id.iv_auto_image_slider);
imageGifContainer = itemView.findViewById(R.id.iv_gif_container);
textViewDescription = itemView.findViewById(R.id.tv_auto_image_slider);
this.itemView = itemView;
}
}
}
Model
private String description;
private String imageUrl;
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getImageUrl() {
return imageUrl;
}
public void setImageUrl(String imageUrl) {
this.imageUrl = imageUrl;
}
}
Activity
mFirebaseDatabase = FirebaseDatabase.getInstance();
mDatabaseReference = mFirebaseDatabase.getReference();
sliderView = findViewById(R.id.imageSlider);
adapter = new SliderAdapter(this);
sliderView.setSliderAdapter(adapter);
sliderView.setIndicatorAnimation(IndicatorAnimations.WORM); //set indicator animation by using SliderLayout.IndicatorAnimations. :WORM or THIN_WORM or COLOR or DROP or FILL or NONE or SCALE or SCALE_DOWN or SLIDE and SWAP!!
sliderView.setSliderTransformAnimation(SliderAnimations.SIMPLETRANSFORMATION);
sliderView.setAutoCycleDirection(SliderView.AUTO_CYCLE_DIRECTION_RIGHT);
sliderView.setIndicatorSelectedColor(Color.WHITE);
sliderView.setIndicatorUnselectedColor(Color.GRAY);
sliderView.setScrollTimeInSec(4); //set scroll delay in seconds :
sliderView.startAutoCycle();
renewItems(sliderView);
renewItems(sliderView);
public void renewItems(View view) {
mSliderList = new ArrayList<>();
SliderItem sliderItem = new SliderItem();
mSliderList.add(sliderItem);
adapter.renewItems(mSliderList);
}
private void loadSliderFirebase() {
mDatabaseReference.child("slider").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot contentSnapShot : dataSnapshot.getChildren()) {
SliderItem slideritem = contentSnapShot.getValue(SliderItem.class);
mSliderList.add(slideritem);
}
adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}