【问题标题】:Fireabase DataSnapshot postSnapshot android AppFirebase DataSnapshot dataSnapshot android App
【发布时间】:2018-08-03 17:36:59
【问题描述】:

如果有人可以提供帮助,我将不胜感激。我是 firebase 的初学者,这是我在学校的最后一个项目。我已经处理这个问题好几个星期了,我想用它差不多一个月了。请多多包涵。

我的最终项目中有“Auth.GoogleSignInApi”方法。一切都很顺利。我尝试将每个用户的“getUid”存储在 Firebase 数据库中,并为他们制作了一个小结构,例如电话号码、昵称和地址。当用户通过 Google 帐户登录时,我创建了三个名为“个人资料、消息和其他项目”的子项目。

Query query = database_Reference
                .orderByChild("Profile/pro_ID")
                .equalTo(user.getUid());
        query.addListenerForSingleValueEvent(new ValueEventListener() {

            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                if (!dataSnapshot.exists()) {

                    Toast.makeText( Activity_Login.this, "Create new username ", Toast.LENGTH_SHORT ).show();

                    Record_ID_FromServer = database_Reference.child(user.getUid()).getKey();//.push().getKey();

                    database_Reference.child( Record_ID_FromServer ).child("Profile").setValue( profile_user_ );
                    database_Reference.child( Record_ID_FromServer ).child("Messages").setValue( profile_user_);
                    database_Reference.child( Record_ID_FromServer ).child("Other").setValue( profile_user_);

“个人资料项目”有 7 个项目,其中一个有 3 个项目,我将其命名为“t_address”。

有时,用户有第二个电话号码或地址。但是每当我尝试部署“DataSnapshot postSnapshot”时!我无法检索“t_address”的“ListView”。我一直在寻找并关注许多教程,但它们都不起作用。

Firebase 中的结构如下: 1:“Record_ID_FromServer = database_Reference.child(user.getUid()).getKey();”

2: “用户信息地址 s = 新用户信息地址();” "myRef.child(user.getUid()).child("Profile").child("t_address").setValue(s);"

我的问题是如何检索“t_address”并将其显示在 ListView 中?

ListView 的 Java 类:

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

TextView t_add_listview_;
String S_t_add_listview_;
ListView listview;

// ===============================================
private FirebaseDatabase mFirebaseDatabase;
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;
private DatabaseReference myRef;
String userID;
FirebaseUser user;
// ================================================


@RequiresApi(api = Build.VERSION_CODES.KITKAT)
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate( savedInstanceState );
    setContentView( R.layout.address_listview );
    Objects.requireNonNull( getSupportActionBar() ).setDisplayHomeAsUpEnabled( true );
// ================================================

    mAuth = FirebaseAuth.getInstance();
    mFirebaseDatabase = FirebaseDatabase.getInstance();
    myRef = mFirebaseDatabase.getReference().child( "users" );
    user = mAuth.getCurrentUser();
    userID = user.getUid();
// ================================================

    t_add_listview_ = (TextView) findViewById( R.id.text_address_listview );
    S_t_add_listview_ = t_add_listview_.getText().toString();
    listview = (ListView) findViewById( R.id.address_listView_list );

// ================================================

    mAuthListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) 
{
            FirebaseUser user = firebaseAuth.getCurrentUser();
            //If user is not signed in getCurrentUser method returns null
            if (user != null) {
                Log.d( TAG, "onAuthstateChange:signed:" + user.getUid() );
                Log.d( "TAG", "You are signed in Firebase!" );

                // User is signed in
                // Toast.makeText( MainActivity.this, "FirebaseAuth user if", Toast.LENGTH_SHORT ).show();
                //UserTV.setText( user.getEmail().toString() );
                t_add_listview_.setText( user.getEmail().toString() );


            }
            }
    };
// ================================================



}





 // ================================================

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    // Inflate menu to add items to action bar if it is present.
    inflater.inflate(R.menu.menu, menu);
    // Associate searchable configuration with the SearchView
    // SearchManager searchManager = (SearchManager) getSystemService(Activity_Login.this.SEARCH_SERVICE);
    //  SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
    // searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

    if (menu != null) {
        menu.findItem(R.id.menu_search).setVisible(false);
    }
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            // app icon in action bar clicked; go home
            Intent intent = new Intent(Address_listview.this, MainActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            finish();
            return true;
        default:
            return super.onOptionsItemSelected( item );
    }
}
// ================================================

// ================================================
@Override
public void onStart() {
    super.onStart();
    mAuth.addAuthStateListener(mAuthListener);
}

@Override
public void onStop() {
    super.onStop();
    if (mAuthListener != null) {
        mAuth.removeAuthStateListener(mAuthListener);
    }
}
// ================================================


}

和其他类添加城市、地区和邮政编码等内容

      // Query query_Address = myRef
      //   .orderByChild("Profile/pro_ID")
      //   .equalTo(user.getUid());

            myRef.addListenerForSingleValueEvent(new ValueEventListener() 
       {

                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        if (dataSnapshot.exists()) {

                            for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {

                                 String get_Address_string1 = myRef.push().getKey();


                                String postkey = postSnapshot.getRef().getKey();
                                String get_Address_string = myRef.child(user.getUid()).getKey();
                                // Database_Reference_Edit_Address.child( postkey ).child( "Profile" ).child( "Address" ).child( get_Address_string ).child( "_UserAddress" ).setValue( S_editText_address );

                                //Database_Reference_Edit_Address.child(postkey).child("Profile").child("_t_address").child( get_Address_string ).setValue(user_address);

                                //get data from edittexts
                                String city = cityEditTxt.getText().toString();
                                String area = areaEditText.getText().toString();
                                String zipcode = zipcodeEditText.getText().toString();

                                //set data to POJO
                                UserInfoAddres s = new UserInfoAddres();
                                s.setcity(city);
                                s.setarea(area);
                                s.setzipcode(zipcode);




                                myRef
                                        .child(user.getUid())
                                        //.child( postkey )
                                        .child( "Profile" )
                                        .child( "t_address" )
                                        .child( get_Address_string1 )
                                        .setValue( s );





                                Toast.makeText( M_MainActivity.this, "added ", Toast.LENGTH_SHORT ).show();

                            }
                        }
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {

                    }
                });



    // =========================================================================================

        }
    });

还有这个类

public class UserInfoAddres {

private String city, area, zipcode;

public UserInfoAddres() {

}

public UserInfoAddres(String city, String area, String zipcode) {
    this.city = city;
    this.area = area;
    this.zipcode = zipcode;
}



public String getcity() {
    return city;
}

public void setcity(String city) {
    this.city = city;
}

public String getarea() {
    return area;
}

public void setarea(String area) {
    this.area = area;
}

public String getzipcode() {
    return zipcode;
}

public void setzipcode(String zipcode) {
    this.zipcode = zipcode;
}
 }

亲切的问候,

【问题讨论】:

    标签: android firebase listview firebase-realtime-database


    【解决方案1】:

    当我决定询问或询问时,我不知道那个秘密是什么,我立即从某个地方得到了解决方案。

    我只是添加了这段代码

    databaseReference.child("users").child(userID).child("Profile").child("t_address").push().setValue(user);
    

    还有这个

    databaseReference.child("users").child(userID).child("Profile").child("t_address").addChildEventListener(new ChildEventListener() {
    

    解决方案也是here 和here。谢谢你,感谢程序员。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-12
      • 1970-01-01
      • 2018-01-19
      • 1970-01-01
      • 2018-12-11
      • 1970-01-01
      相关资源
      最近更新 更多