2017-08-18 2 views
0

は私が達成したい何firebaseアンドロイドのfirebaseデータベースで選択した値を持つノードのキーUIDを取得するにはどうすればよいですか?以下

Areas 
    -AreaUID1 
     -Admin 
     -Admin1UID 
       -admin_name:"" 
       -admin_area:"" 
       -admin_email:"" 
     -Admin2UID 
       -admin_name:"" 
       -admin_area:"" 
       -admin_email:"" 
       . 
       . 
     -Events 
      -EventUid1 
       -event_name:"" 
       -event_timings:"" 
     -EventUid2 
       -event_name:"" 
       -event_timings:"" 
      . 
      . 

     -Gallery 
      -ImageUid1 
       -image_link:"" 

    -AreaUid2 
     -Admin 
     -Admin1UID 
       -admin_name:"" 
       -admin_area:"" 
       -admin_email:"" 
     -Admin2UID 
       -admin_name:"" 
       -admin_area:"" 
       -admin_email:"" 
       . 
       . 
     -Events 
      -EventUid1 
       -event_name:"" 
       -event_timings:"" 
     -EventUid2 
       -event_name:"" 
       -event_timings:"" 
      . 
      . 

     -Gallery 
      -ImageUid1 
       -image_link:"" 

の私のデータベースですか?

同じデータベースの助けを借りて利用可能なadmin_areasのリストがあることを考慮して、エリアのAreaUIDを取得したいと思います。ユーザーがリスト内の項目をクリックすると、admin_areaがリストから選択したadmin_areaに一致するノードのAreaUIDを取得します。ここで、例えばについて

) がユーザに提示領域のリストである -

1)エリア1

2)エリア2

3)エリア3

4)エリア4

ユーザーがエリア2をタップすると、AreaUidを取得したいのですが、どうすればいいですか?以下は、あなたのコメントに基づいて基準

mDbRef = FirebaseDatabase.getInstance().getReference().child("Areas"); 
     arr = new ArrayList<>(); 
     listView = (ListView) findViewById(R.id.list_of_areas); 
     ValueEventListener listener = new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       for (DataSnapshot snapshot : dataSnapshot.getChildren()) { 
        String areaUid = snapshot.getKey(); 
        Log.i("AreaUID", areaUid); 
        showListOfAreas(areaUid); 
       } 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 
       System.out.println(databaseError.toException()); 
      } 
     }; 
     mDbRef.addValueEventListener(listener); 


    } 

    private void showListOfAreas(final String areaUid) { 

     pd.setTitle("Fetching Registered Areas"); 
     pd.setMessage("Loading Areas..."); 
     pd.show(); 
     DatabaseReference mAreaNameRef = mDbRef.getRef().child(areaUid).child("Admin").child("admin1"); 

     mAreaNameRef.addValueEventListener(new ValueEventListener() { 
      @Override 

      public void onDataChange(DataSnapshot dataSnapshot) { 

       final Admin admin = dataSnapshot.getValue(Admin.class); 
       arr.add(admin.getAdmin_colony()); 
       adapter = new ArrayAdapter<>(ListOfAreasActivity.this, 
         android.R.layout.simple_list_item_1, android.R.id.text1, arr); 
       listView.setAdapter(adapter); 
       pd.dismiss(); 
       listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
        @Override 
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

         String areaName = (String) parent.getItemAtPosition(position); 
         //findUserIdWithLocation(areaName); 

         SharedPreferences.Editor editor = getSharedPreferences("shared_prefs", MODE_PRIVATE).edit(); 
         editor.putString("area_name", areaName); 
         editor.apply(); 
         editor.commit(); 
         Intent intent = new Intent(ListOfAreasActivity.this, MainActivity.class); 
         startActivity(intent); 
         finish(); 
        } 
       }); 

      } 


      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 
     }); 


    } 
+0

「areaUid」を取得したい行を指摘できますか? – Wilik

+0

コメント行は、領域を取得して保存する方法です。 – knightcube

答えて

0

のためのいくつかのコードがあり、areaUidは、これはあなたが何を意味するのかではない場合、私に教えてくださいshowListOfAreasのパラメータ

private void showListOfAreas(final String areaUid) { 

    ... 

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      String areaName = (String) parent.getItemAtPosition(position); 

      // area's UID 
      String areaUidAfterClick = areaUid; 

      SharedPreferences.Editor editor = getSharedPreferences("shared_prefs", MODE_PRIVATE).edit(); 
      editor.putString("area_name", areaName); 
      editor.apply(); 
      editor.commit(); 
      Intent intent = new Intent(ListOfAreasActivity.this, MainActivity.class); 
      startActivity(intent); 
      finish(); 
     } 
    }); 

    ... 

} 

から取得することができます。

+0

いいえ、選択した領域のuidが必要です – knightcube

関連する問題