Я разрабатываю мобильное устройство, которое отображает список лекарств с помощью Sticky Headers RecyclerView, и извлекаю эти предметы (список лекарств) из облачной базы данных Firebase Firetore, но оно приносит только один предмет вместо всех предметов из указанной коллекции
Вот мои коды во фрагменте, где должны быть показаны лекарства
public class DawaFragment extends Fragment {
private RecyclerView dawaList;
private ArrayList<Dawa> dawaPostList;
FirebaseFirestore firebaseFirestore;
private DawaRecyclerAdapter adapter;
LinearLayoutManager layoutManager;
private DocumentSnapshot lastVisible;
private Boolean isFirstPageFirstLoad = true;
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK)
{
String group_character_clicked = data.getStringExtra("result");
int position = Common.findPositionWithName(group_character_clicked,dawaPostList);
dawaList.smoothScrollToPosition(position);
}
}
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public View onCreateView(@NonNull LayoutInflater inflater, final ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_dawa, container, false);
dawaPostList = new ArrayList<>();
dawaList = view.findViewById(R.id.dawaList);
layoutManager = new LinearLayoutManagerWithSmoothScroller(getContext());
dawaList.setLayoutManager(layoutManager);
dawaList.addItemDecoration(new DividerItemDecoration(Objects.requireNonNull(getContext()),layoutManager.getOrientation()));
createMedicine();
adapter = new DawaRecyclerAdapter(getContext(), dawaPostList);
dawaList.setAdapter(adapter);
return view;
}
private void createMedicine() {
if(FirebaseAuth.getInstance().getCurrentUser() != null) {
firebaseFirestore = FirebaseFirestore.getInstance();
dawaList.addOnScrollListener(new RecyclerView.OnScrollListener() {
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
Boolean reachBottom = !recyclerView.canScrollVertically(1);
if (reachBottom)
{
loadMorePost();
}
}
});
Task<QuerySnapshot> firstQuery = firebaseFirestore.collection("Dawa").limit(30).get();
firstQuery.addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot documentSnapshots) {
if (documentSnapshots != null) {
if (!documentSnapshots.isEmpty()) {
if (isFirstPageFirstLoad) {
lastVisible = documentSnapshots.getDocuments().get(documentSnapshots.size() - 1);
dawaPostList.clear();
}
for (DocumentChange doc : documentSnapshots.getDocumentChanges()) {
if (doc.getType() == DocumentChange.Type.ADDED) {
String blogPostId = doc.getDocument().getId();
Dawa blogPost = doc.getDocument().toObject(Dawa.class).withId(blogPostId);
if (isFirstPageFirstLoad) {
dawaPostList.add(blogPost);
dawaPostList = Common.sortList(dawaPostList);
dawaPostList = Common.addAlphabets(dawaPostList);
} else {
dawaPostList.add(0, blogPost);
dawaPostList = Common.sortList(dawaPostList);
dawaPostList = Common.addAlphabets(dawaPostList);
}
adapter.notifyDataSetChanged();
}
}
isFirstPageFirstLoad = false;
}
}
}
});
}
}
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
private void loadMorePost() {
Task<QuerySnapshot> nextQuery = firebaseFirestore.collection("Dawa").startAfter(lastVisible)
.limit(30).get();
nextQuery.addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot documentSnapshots) {
if(documentSnapshots != null) {
if (!documentSnapshots.isEmpty()) {
lastVisible = documentSnapshots.getDocuments().get(documentSnapshots.size() - 1);
for (DocumentChange doc : documentSnapshots.getDocumentChanges()) {
if (doc.getType() == DocumentChange.Type.ADDED) {
String blogPostId = doc.getDocument().getId();
Dawa blogPost = doc.getDocument().toObject(Dawa.class).withId(blogPostId);
dawaPostList.add(blogPost);
dawaPostList = Common.sortList(dawaPostList);
dawaPostList = Common.addAlphabets(dawaPostList);
adapter.notifyDataSetChanged();
}
}
}
}
}
});
}
}
А ниже приведены коды моего адаптера
public class DawaRecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private List<Dawa> dawa_list;
public Context context;
public DawaRecyclerAdapter(Context context, List<Dawa> dawa_list) {
this.context = context;
this.dawa_list = dawa_list;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
LayoutInflater inflater = LayoutInflater.from(context);
//View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.dawa_item_layout, parent, false);
if(viewType == VIEWTYPE_GROUP)
{
ViewGroup group = (ViewGroup)inflater.inflate(R.layout.group_layout,viewGroup,false);
return new GroupViewHolder(group);
}
else if(viewType == VIEWTYPE_PERSON)
{
ViewGroup group = (ViewGroup)inflater.inflate(R.layout.dawa_layout,viewGroup,false);
return new PersonViewHolder(group);
}
else
{
ViewGroup group = (ViewGroup)inflater.inflate(R.layout.group_layout,viewGroup,false);
return new GroupViewHolder(group);
}
}
@Override
public int getItemViewType(int position) {
return dawa_list.get(position).getViewType();
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, @SuppressLint("RecyclerView") final int position) {
if (viewHolder instanceof GroupViewHolder)
{
GroupViewHolder groupViewHolder = (GroupViewHolder) viewHolder;
groupViewHolder.textGroup.setText(dawa_list.get(position).getName());
groupViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//start action to display al alphabets
((Activity)context).startActivityForResult(new Intent(context, AlphabetActivity.class), RESULT_CODE);
}
});
}
else if (viewHolder instanceof PersonViewHolder)
{
final PersonViewHolder personViewHolder = (PersonViewHolder) viewHolder;
personViewHolder.dawaName.setText(dawa_list.get(position).getName());
//Get Avatar
ColorGenerator generator = ColorGenerator.MATERIAL;
TextDrawable drawable = TextDrawable.builder().buildRound(String.valueOf(dawa_list.get(position).getName()
.charAt(0)),generator.getRandomColor());
personViewHolder.dawaAvatar.setImageDrawable(drawable);
personViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent commentIntent = new Intent(context, DawaDescsActivity.class);
Bundle extras = new Bundle();
extras.putString("article", dawa_list.get(position).getDescs());
extras.putString("title", dawa_list.get(position).getName());
commentIntent.putExtras(extras);
context.startActivity(commentIntent); }
});
}
}
@Override
public int getItemCount() {
return dawa_list.size();
}
private class GroupViewHolder extends RecyclerView.ViewHolder{
private TextView textGroup;
public GroupViewHolder(@NonNull View itemView) {
super(itemView);
textGroup = itemView.findViewById(R.id.textGroup);
}
}
private class PersonViewHolder extends RecyclerView.ViewHolder{
private TextView dawaName;
private ImageView dawaAvatar;
public PersonViewHolder(View itemView) {
super(itemView);
dawaName = itemView.findViewById(R.id.dawa_name);
dawaAvatar = itemView.findViewById(R.id.dawa_avatar);
}
}
}