i am making an android app for our technofest event in our college which will show data related to events that will organize in that time.
This is my code for one Fragment page which contains three recyclerView all of which is horizontal in orientation and vertically placed (each three) which contains only images with onClick() listener. On clicking on one of the images a new fragment will open which will contains data related to that event Like date, time ,List of participants, event descriptions, imageUri (for images in recyclerView) etc in other fragments.
i have created a firebaseDatabase reference where my data is stored and i am fetching data as object.
1. But the problem is that i could add data in values(List) in addValueEventListener() but outside the block that list got vanished and gives null during passing list into adapter.
2. How could i pass object using Bundle in other fragment toload data
3. if there is any odd methods out there ,plz give some suggestion to improve my code, i am beginner in android
public class HomePart2 extends Fragment{
private RecyclerView recyclerView1,recyclerView2,recyclerView3;
private RecyclerView.LayoutManager llm1,llm2,llm3;
public List<EventsData> values1 = new ArrayList<>(),values2 = new
ArrayList<>(),values3 = new ArrayList<>();
private FirebaseDatabase mDatabase;
private DatabaseReference mRef;
ImageRecyclerViewAdapters adapter1,adapter2,adapter3;
public HomePart2(){
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View rootView = inflater.inflate(R.layout.activity_home_part_2,container,false);
return rootView;
}
@Override
public void onViewCreated(View view,Bundle savedInstanceState){
super.onViewCreated(view,savedInstanceState);
getActivity().setTitle("Home");
mDatabase = FirebaseDatabase.getInstance();
mRef = mDatabase.getReference();
mRef.child("EVENTS_INFO").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
for (DataSnapshot dataSnapshot1 : enter code
dataSnapshot.child("CULTURAL_INFO").getChildren()){
EventsData p = dataSnapshot1.getValue(EventsData.class);
values1.add(p);
}
for (DataSnapshot dataSnapshot1 :
dataSnapshot.child("SPORTS_INFO").getChildren()){
values2.add(dataSnapshot1.getValue(EventsData.class));
}
for (DataSnapshot dataSnapshot1 : dataSnapshot.child("TECHNICAL_INFO").getChildren()){
values3.add(dataSnapshot1.getValue(EventsData.class));
}
Log.d("tag","myData3 "+ values1);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Log.d("tag","myData3 "+ values1);
recyclerView1 = view.findViewById(R.id.rec1);
recyclerView2 = view.findViewById(R.id.rec2);
recyclerView3 = view.findViewById(R.id.rec3);
recyclerView1.setHasFixedSize(true); recyclerView2.setHasFixedSize(true); recyclerView3.setHasFixedSize(true);
llm1 = new LinearLayoutManager(getActivity(),LinearLayoutManager.HORIZONTAL,false);
llm2 = new LinearLayoutManager(getActivity(),LinearLayoutManager.HORIZONTAL,false);
llm3 = new LinearLayoutManager(getActivity(),LinearLayoutManager.HORIZONTAL,false);
adapter1 = new ImageRecyclerViewAdapters(getActivity(),values1);
adapter2 = new ImageRecyclerViewAdapters(getActivity(),values1);
adapter3 = new ImageRecyclerViewAdapters(getActivity(),values1);
recyclerView1.setLayoutManager(llm1);
recyclerView2.setLayoutManager(llm2);
recyclerView3.setLayoutManager(llm3);
recyclerView1.setAdapter(adapter1);
recyclerView2.setAdapter(adapter2);
recyclerView3.setAdapter(adapter3);
}
}
This Adapter
public class ImageRecyclerViewAdapters extends
RecyclerView.Adapter<ImageRecyclerViewAdapters.ViewHolder> {
private List<EventsData> eventsData = new ArrayList<>();
private List<Uri> imagesPosition1 = new ArrayList<>();
Context mContext;
int position = 0;
public ImageRecyclerViewAdapters(Context context,List<EventsData> eventsData){
this.mContext = context;
this.eventsData = eventsData;
if(eventsData != null) {
imagesPosition1.add(Uri.parse(eventsData.get(0).getImageUri()));
imagesPosition1.add(Uri.parse(eventsData.get(1).getImageUri()));
imagesPosition1.add(Uri.parse(eventsData.get(2).getImageUri()));
}
}
@Override
public ImageRecyclerViewAdapters.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View v = inflater.inflate(R.layout.card_item,parent,false);
ViewHolder vh = new ViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(ImageRecyclerViewAdapters.ViewHolder holder, int position) {
RequestOptions options = new RequestOptions()
.centerCrop()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.skipMemoryCache(true)
.placeholder(R.drawable.gate)
.error(R.drawable.gate);
Glide.with(mContext).load(imagesPosition1.get(position)).apply(options).into(holder.images);
}
@Override
public int getItemCount() {
return imagesPosition1.size();
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
View v;
CardView cardView;
ImageView images;
public ViewHolder(View itemView) {
super(itemView);
v = itemView;
images = itemView.findViewById(R.id.cardImage);
mContext = itemView.getContext();
cardView = itemView.findViewById(R.id.card_view);
}
@Override
public void onClick(View view) {
final Intent intent;
position = getAdapterPosition();
Bundle b = new Bundle();
b.putString("position",imagesPosition1.toString());
intent = new Intent(mContext, ScrollingActivity.class);
intent.putExtras(b);
mContext.startActivity(intent);
}
}
}
This is My Event Class
public class EventsData {
EventsData(){}
private String Date;
private String Description;
private String ImageUri;
private Map<String,String> ListOfParticipants = new HashMap<>();
private String Name;
private String Time;
public String getDescription() {
return Description;
}
public void setDescription(String description) {
Description = description;
}
public Map<String, String> getListOfParticipants() {
return ListOfParticipants;
}
public void setListOfParticipants(Map<String, String> listOfParticipants) {
ListOfParticipants = listOfParticipants;
}
public String getImageUri() {
return ImageUri;
}
public void setImageUri(String imageUri) {
ImageUri = imageUri;
}
public EventsData(String date, String desc, String Imagesuri, Map<String,String> parti , String name, String time) {
Map<String,String> list =new HashMap<>();
this.Date = date;
this.Description = desc;
this.ImageUri = Imagesuri;
this.ListOfParticipants = parti;
this.Name = name;
this.Time = time;
}
public String getDate() {
return Date;
}
public void setDate(String date) {
Date = date;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getTime() {
return Time;
}
public void setTime(String time) {
Time = time;
}
}