(firestore) Я хочу получить информацию о массиве документа в виде списка - PullRequest
0 голосов
/ 16 июня 2020

Следующая информация хранится в пожарном хранилище. Я хочу видеть индекс add_day в виде списка.

enter image description here Я написал следующий код, но в списке отображается только самая последняя информация, я хочу увидеть информацию обо всех массивах add_day .


Это ListActivity

public class ListActivity extends AppCompatActivity {

    private FragmentManager fragmentManager;
    private DayFragment dayFragment;
    private FragmentTransaction transaction;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        fragmentManager = getSupportFragmentManager();
        dayFragment = new DayFragment();
        transaction = fragmentManager.beginTransaction();
        transaction.replace(R.id.container, dayFragment).commitAllowingStateLoss();
    }

    public void clickHandler(View view)
    {
        transaction = fragmentManager.beginTransaction();

        switch(view.getId())
        {
            case R.id.btn_fragmentB:
                transaction.replace(R.id.container, dayFragment).commitAllowingStateLoss();
                break;
        }
    }
}

DayFragment

public class DayFragment extends Fragment {
    private static final String TAG = "DayFragment";

    public DayFragment() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.medicin_list_item, container, false);
        //final ImageView profileImageView = view.findViewById(R.id.profileImageView);
        final TextView name_medicin = view.findViewById(R.id.name_medicin_text);
         ......

        DocumentReference documentReference = FirebaseFirestore.getInstance().collection("medicinday").document(FirebaseAuth.getInstance().getCurrentUser().getEmail());
        documentReference.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
            @Override
            public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                if (task.isSuccessful()) {
                    DocumentSnapshot document = task.getResult();
                    if (document != null)
                    {
                        if (document.exists())
                        {
                            List list = (List) document.getData().get("add_day");
                            for(int i=0;i<list.size();i++) {
                                Log.i("TEST", "data[" + i + "] > " + list.get(i).toString());
                                HashMap map = (HashMap) list.get(i);
                                name_medicin.setText(map.get("day").toString());
                                ....
                            }
                        }else {
                            Log.d(TAG, "No such document");
                        }
                    }
                } else {
                    Log.d(TAG, "get failed with ", task.getException());
                }
            }
        });
          return view;
    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
    }

    @Override
    public void onDetach() {
        super.onDetach();
    }

    @Override
    public void onPause(){
        super.onPause();
    }
}

1 Ответ

0 голосов
/ 16 июня 2020

Чтобы отобразить всю информацию в одном текстовом представлении:

String msg = "";
List list = (List) document.getData().get("add_day");
for(int i=0;i<list.size();i++) {
    Log.i("TEST", "data[" + i + "] > " + list.get(i).toString());
    HashMap map = (HashMap) list.get(i);
    msg = msg + map.get("day").toString() + "\n";
}
name_medicin.setText(msg);
...