У меня есть эти данные в firebase:
Я уже зациклил данные через отдельные дочерние классы, но я хочу зациклить все дочерние классы, используя горизонтальный просмотр повторов длярассматриваемый ребенок и вертикальный просмотрщик для всех данных. Я смог сделать это, но только вручную, используя реселлер-просмотр для всех дочерних классов. Мне было интересно, если бы можно было автоматизировать процесс, и не нужно ли это делать каждый раз, когда я хочу новое recylerview.
first_recycler_view = (RecyclerView) view.findViewById(R.id.first_recycler_view);
first_recycler_view.setNestedScrollingEnabled(false);
first_recycler_view.setHasFixedSize(false);
first_recycler_view.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false));
database = FirebaseDatabase.getInstance();
final DatabaseReference reference = database.getReference().child("festivals");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
list = new ArrayList<Profile>();
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
Profile p = dataSnapshot1.getValue(Profile.class);
list.add(p);
}
adapter = new MyAdapter(getContext().getApplicationContext(), list);
first_recycler_view.setAdapter(adapter);
rvid = 1;
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(getContext(), "Opsss.... Something is wrong", Toast.LENGTH_SHORT).show();
}
});
second_recycler_view = (RecyclerView) view.findViewById(R.id.second_recycler_view);
second_recycler_view.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false));
database = FirebaseDatabase.getInstance();
final DatabaseReference reference1 = database.getReference().child("categories");
reference1.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
list = new ArrayList<Profile>();
for (DataSnapshot dataSnapshot2 : dataSnapshot.getChildren()) {
Profile p = dataSnapshot2.getValue(Profile.class);
list.add(p);
}
adapter = new MyAdapter(getContext(), list);
second_recycler_view.setAdapter(adapter);
rvid = 2;
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(getContext(), "Opsss.... Something is wrong", Toast.LENGTH_SHORT).show();
}
});
Возможно ли получить все данные из базы данных одним махом вместо того, чтобы писать один и тот же код каждый раз, когда я хочу получить новое представление о переработчике. Фактические данные в моем проекте большие, поэтому было бы полезно автоматизировать процесс.
Вот мой адаптер
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
Context context;
ArrayList<Profile> profiles;
public View view;
public MyAdapter(Context c , ArrayList<Profile> p)
{
context = c;
profiles = p;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_movie, parent, false);
return new MyViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.title.setText(profiles.get(position).getName());
Picasso.get().load(profiles.get(position).getImage()).into(holder.profilePic);
}
@Override
public int getItemCount() {
return profiles.size();
}
class MyViewHolder extends RecyclerView.ViewHolder
{
TextView title;
ImageView profilePic;
public MyViewHolder(View itemView) {
super(itemView);
view = itemView;
if(HomeFragment.rvid == 1) {
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(context, Festival.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.putExtra("Name", title.getText());
context.startActivity(i);
}
});
} else if (HomeFragment.rvid == 3 ) {
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(context, Places.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.putExtra("Name", title.getText());
context.startActivity(i);
}
});
}
title = (TextView) itemView.findViewById(R.id.movietitle);
profilePic = (ImageView) itemView.findViewById(R.id.thumbnail);
}
}