2017-01-10 12 views
4

私はここで本当に愚かなものがないかもしれません。しかし、私は正しい形式で火災基地データを取得していません。Firebaseのデータが正しい形式で取得されていません

Person.java

public class Person { 

    private String name; 
    private String email; 
    private String hobby; 

    public Person(){ 

    } 


    public Person(String name , String email , String hobby){ 
     this.name= name; 
     this.email = email; 
     this.hobby = hobby; 

    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 

    public void setHobby(String hobby) { 
     this.hobby = hobby; 
    } 

    public String getName() { 
     return name; 
    } 

    public String getEmail() { 
     return email; 
    } 

    public String getHobby() { 
     return hobby; 
    } 
} 

MainActivity.java

public class MainActivity extends AppCompatActivity { 

    private ViewPager viewPager; 
// private FirebaseAuth mAuth; 
    List<Person> person; 
    private Context context; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     person = new ArrayList<>(); 
//  mAuth = FirebaseAuth.getInstance(); 
     context = this; 



     viewPager = (ViewPager) findViewById(R.id.pagerView); 
     viewPager.setAdapter(new MyPagerAdapter(getSupportFragmentManager(), person, context)); 


    } 


    class MyPagerAdapter extends FragmentPagerAdapter { 
     String[] tabsArray; 
     private List<Person> personInAdapter = new ArrayList<>(); 
     private Context context; 

//  int icons[] = {R.drawable.white_home, R.drawable.white_heart, 
//    R.drawable.white_star, R.drawable.white_heart, R.drawable.white_star}; 

     public MyPagerAdapter(FragmentManager fm, List<Person> person, Context context) { 
      super(fm); 
      personInAdapter = person; 
      this.context = context; 
      tabsArray = getResources().getStringArray(R.array.TABS); 
     } 


//  @Override 
//  public CharSequence getPageTitle(int position) { 
//   return tabsArray[position]; 
//  } 

     @Override 
     public Fragment getItem(int position) { 

      return MyFragment.getInstance(position); 
     } 

     @Override 
     public int getCount() { 
      return personInAdapter.size(); 
     } 
    } 
} 

MyFragment.java

public class MyFragment extends Fragment { 
    private TextView upperText; 
    private TextView lowerText; 
    List<Person> personInAdapter = new ArrayList<>(); 
    private Context context; 
    private DatabaseReference databaseReference; 
    public static MyFragment getInstance(int position) { 
     MyFragment myFragment = new MyFragment(); 
     Bundle args = new Bundle(); 
     args.putInt("position", position); 
     myFragment.setArguments(args); 

     return myFragment; 
    } 


    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_my, container, false); 
     upperText = (TextView) view.findViewById(R.id.myFragmentUpperText); 
     lowerText = (TextView) view.findViewById(R.id.myFragmentLowerText); 
     databaseReference = FirebaseUtil.getBaseRef().child("Person"); 
     int i = getArguments().getInt("position"); 
     ValueEventListener postListener = new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       // Get Post object and use the values to update the UI 
       Person person = dataSnapshot.getValue(Person.class); 

       Log.e("Data In Person ", person.toString()); 
       upperText.setText(person.getName()); 
       lowerText.setText(person.getEmail()); 
       // [END_EXCLUDE] 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 
       // Getting Post failed, log a message 
       // [START_EXCLUDE] 

      } 
     }; 
     databaseReference.addValueEventListener(postListener); 
//  Bundle bundle = getArguments(); 
//  if (bundle != null) { 
//   textView.setText("The value is" +i); 
//  } 

     return view; 
    } 


    @Override 
    public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 

    } 
} 

MyFragment ScreenShot

LogCatから

:私のfirebaseコンソールから

W/ClassMapper: No setter/field for -Ka45AN7nk3rAqTGfcp3 found on class testfirebase.com.testprojectforall.Person 
W/ClassMapper: No setter/field for -Ka45AN20cVBNFqbCwUj found on class testfirebase.com.testprojectforall.Person 
W/ClassMapper: No setter/field for -Ka45ANAi__pHJhzwjIa found on class testfirebase.com.testprojectforall.Person 
W/ClassMapper: No setter/field for -Ka45AN9pBd21aiHbS6i found on class testfirebase.com.testprojectforall.Person 
W/ClassMapper: No setter/field for -Ka45AN8Q1Y5GHOWRnpP found on class testfirebase.com.testprojectforall.Person 
E/Data In Person: [email protected] 
W/ClassMapper: No setter/field for -Ka45AN7nk3rAqTGfcp3 found on class testfirebase.com.testprojectforall.Person 
W/ClassMapper: No setter/field for -Ka45AN20cVBNFqbCwUj found on class testfirebase.com.testprojectforall.Person 
W/ClassMapper: No setter/field for -Ka45ANAi__pHJhzwjIa found on class testfirebase.com.testprojectforall.Person 
W/ClassMapper: No setter/field for -Ka45AN9pBd21aiHbS6i found on class testfirebase.com.testprojectforall.Person 
W/ClassMapper: No setter/field for -Ka45AN8Q1Y5GHOWRnpP found on class testfirebase.com.testprojectforall.Person 
E/Data In Person: [email protected] 
W/ClassMapper: No setter/field for -Ka45AN7nk3rAqTGfcp3 found on class testfirebase.com.testprojectforall.Person 
W/ClassMapper: No setter/field for -Ka45AN20cVBNFqbCwUj found on class testfirebase.com.testprojectforall.Person 
W/ClassMapper: No setter/field for -Ka45ANAi__pHJhzwjIa found on class testfirebase.com.testprojectforall.Person 
W/ClassMapper: No setter/field for -Ka45AN9pBd21aiHbS6i found on class testfirebase.com.testprojectforall.Person 
W/ClassMapper: No setter/field for -Ka45AN8Q1Y5GHOWRnpP found on class testfirebase.com.testprojectforall.Person 
E/Data In Person: [email protected] 
W/ClassMapper: No setter/field for -Ka45AN7nk3rAqTGfcp3 found on class testfirebase.com.testprojectforall.Person 
W/ClassMapper: No setter/field for -Ka45AN20cVBNFqbCwUj found on class testfirebase.com.testprojectforall.Person 
W/ClassMapper: No setter/field for -Ka45ANAi__pHJhzwjIa found on class testfirebase.com.testprojectforall.Person 
W/ClassMapper: No setter/field for -Ka45AN9pBd21aiHbS6i found on class testfirebase.com.testprojectforall.Person 
W/ClassMapper: No setter/field for -Ka45AN8Q1Y5GHOWRnpP found on class testfirebase.com.testprojectforall.Person 
E/Data In Person: [email protected] 

サンプル:

Database Snapshot from Firebase Console

私は、テキストが、設定することはできませんを取得しています。火災基地の要求を処理する際に私は何をしていますか?

+0

私はほんの数週間前に同じ学習曲線を通り抜けました。これは私が彼らの書類(IMHO)で十分に明確にしていないと思う一つの事です。それをデバッグしようとしても、まったく役に立たない。 –

+0

ええまったく私は最後の5時間にこれを試しています.D:Dでも、logcatやインターネット上の関連情報は得られませんでした。しかし、フランクは本当に速く、ポイントまででした。ありがとう – AndroidBeginner

答えて

2

あなたは、データベース内PersonノードにValueEventListenerを装着している:

ValueEventListener postListener = new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      // Get Post object and use the values to update the UI 
      Person person = dataSnapshot.getValue(Person.class); 

      Log.e("Data In Person ", person.toString()); 
      upperText.setText(person.getName()); 
      lowerText.setText(person.getEmail()); 
      // [END_EXCLUDE] 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      // Getting Post failed, log a message 
      // [START_EXCLUDE] 

     } 
    }; 
    databaseReference.addValueEventListener(postListener); 

これはあなたのonDataChangePersonノードの下にあるすべてのデータで呼び出されることを意味します。あなたのケースでは、それは複数の人になるでしょう。

スナップショットに子ノードをループすることによって、これを処理する必要が onDataChangeあなたに

public void onDataChange(DataSnapshot dataSnapshot) { 
    for (DataSnapshot personSnapshot: dataSnapshot.getChildren()) { 
     Person person = personSnapshot.getValue(Person.class); 
     Log.i("Data In Person ", person.toString()); 
    } 
} 
+1

@AndroidBeginnerあなたはすぐに素晴らしい答えを受けました!私はまだこれがログがあなたに語っていたものであることを指摘したいと思います。 'getValue()'メソッドは 'push()'メソッドで生成されたキーを 'Person.class'の中のあるフィールドに設定しようとしています。これのためのフィールドがないので、失敗し、代わりにこの動作しないメッセージと共にキーを表示します。あなたはレベルが高すぎました。 – hotrod

+0

ありがとうフランク:) – AndroidBeginner

関連する問題