0

我想从 Firestore 检索字段作为列表数组

在这个恐怖字段中是“地图”我想检索印地语文档中的所有字段作为数组,如图所示

    public class HindiStory extends AppCompatActivity {
        private static final String TAG = "HindiStory";

        List<String> list;


        FirebaseFirestore db = FirebaseFirestore.getInstance();
        private DocumentReference hindiStoryref = db.collection("story").document("HINDI");

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_hindi_story);




        }

        public void hmoral(View v){
            hindiStoryref.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
                @Override
                public void onComplete(@NonNull Task<DocumentSnapshot> task) {

                    if (task.isSuccessful()) {
                        list = new ArrayList<>();
                        Map<String, Object> map = task.getResult().getData();
                        for (Map.Entry<String, Object> entry : map.entrySet()){
                            list.add(entry.getKey());
                            Log.d(TAG, entry.getKey());
                    }


                }



                }
            });


    }


    public  void hromantic(View v){

    }
}

我想在单击按钮时检索
并在另一个活动中使用列表视图中的此数组数据
谢谢

4

2 回答 2

0

试试下面的代码它会为你工作

hindiStoryref.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
            @Override
            public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                if (task.getResult() != null && task.getResult().exists() && task.getResult().getData() != null) {
                    list.addAll(task.getResult().getData().keySet()); //Adding list of field list into list object
                    Log.d("arrayKeys size", list.size() + "");
                    Log.d("arrayKeys size", list.toString());
                }
            }
        });
于 2019-12-31T06:33:05.210 回答
0

您可以尝试使用 hashmap 进行投射。

HashMap<String, Object> categoriesMap = (HashMap)task.getResult().getData()

 list.add(entry.getKey());

您可以使用

categoriesMap.keySet();

从 Hashmap 中获取所有值

这就是我检索 HasMap 值的方法:

  ref.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<DocumentSnapshot> task) {
            if(task.isSuccessful()){
                DocumentSnapshot doc = task.getResult();
                Log.d(TAG, "onComplete: " + doc);
                HashMap<String, String> categoriesMap = (HashMap)doc.getData().get("categories");
                mCategories.addAll(categoriesMap.keySet());
            }

        }
    });
于 2019-12-31T06:35:37.877 回答