Как извлечь дочерние значения из базы данных Firebase и отобразить их в списке макетов? - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть класс Fragment, в котором я хочу отобразить список макетов, в которых макет обновляется со значениями данных Firebase.

Вот так выглядит моя база данных (user_dubs> user_id> photo id):

enter image description here

Вот фрагмент ( ОБНОВЛЕНО ):

public class DubsFragment extends Fragment {

private static final String TAG = "DubsFragment";

//firebase
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;
private FirebaseDatabase mFirebaseDatabase;
private DatabaseReference myRef;

//widgets
private EditText mthisdub;
private ListView mListView;

//vars
private ArrayList<String> mDubs;
private ArrayAdapter<String> adapter;
private Context mContext;
private PostDubs mpostdubs;
private String userID;


@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_mydubs, container, false);

    mListView = (ListView) view.findViewById(R.id.listViewz);
    mDubs = new ArrayList<>();
    mContext = getActivity();
    mpostdubs = new PostDubs();

    adapter = new ArrayAdapter<String>(mContext, R.layout.layout_dubs_listitem, R.id.getusername, mDubs);
    mListView.setAdapter(adapter);

        setupFirebaseAuth();
    return view;
}

private void setupFirebaseAuth(){
    Log.d(TAG, "setupFirebaseAuth: setting up firebase auth.");

    mAuth = FirebaseAuth.getInstance();
    mFirebaseDatabase = FirebaseDatabase.getInstance();
    myRef = mFirebaseDatabase.getReference();

    userID = mAuth.getCurrentUser().getUid();
    DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
    Query query = reference
            .child(getString(R.string.dbname_userdubs))
            .child(userID)
            .orderByChild(getString(R.string.field_photoid));
    query.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

                    for ( DataSnapshot singleSnapshot :  dataSnapshot.getChildren()) {
                        mpostdubs = singleSnapshot.getValue(PostDubs.class);
                        mDubs.add(mpostdubs.getEditdub().toString());
                        adapter.notifyDataSetChanged();
                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
}


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

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

}

Post Dubs Class:

public class PostDubs {

    private String editdub;
    private String dubdate;
    private String user_id;
   private String photoid;
    private String username;
    private Context mContext;

    public PostDubs(String user_id, String editdub, String photoid, String dubdate, String username){
        this.user_id = user_id;
        this.editdub = editdub;
        this.dubdate = dubdate;
        this.photoid = photoid;
        this.username = username;
    }

    public PostDubs() {

    }


    public String getUser_id() {
        return user_id;
    }

    public void setUser_id(String user_id) {
        this.user_id = user_id;
    }

    public String getEditdub() {
        return editdub;
    }

    public void setEditdub(String editdub) {
        this.editdub = editdub;
    }

    public String getDubdate() {
        return dubdate;
    }

    public void setDubdate(String dubdate) {
        this.dubdate = dubdate;
    }

    public String getPhotoid() {
        return photoid;
    }

    public void setPhotoid(String photoid) {
        this.dubdate = photoid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }


    @Override
    public String toString() {
        return "User{" +
                "user_id='" + editdub + '\'' +
                ", phone_number='" + dubdate + '\'' +
                '}';
    }

}

Вот layout_dubs_listitem.xml:

<?xml version="1.0" encoding="utf-8" ?>
     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto">
     <RelativeLayout android:layout_width="match_parent"
         android:layout_height="100dp">

    <de.hdodenhof.circleimageview.CircleImageView android:layout_width="75dp"
        android:layout_height="75dp"
        app:civ_border_color="@color/black"
         app:civ_border_width="0.5dp"
        android:id="@+id/profile_image"
        android:layout_marginLeft="20dp"
        android:layout_centerVertical="true" />

     <RelativeLayout android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_toRightOf="@+id/profile_image"
         android:layout_centerVertical="true">

    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:textSize="22sp"
        android:textColor="@color/black"
        android:id="@+id/editdub"
        android:text=""/>

    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:textSize="15sp"
        android:layout_centerVertical="true"
        android:textColor="@color/black"
         android:id="@+id/getusername"
        android:text=""/>
</RelativeLayout>
</RelativeLayout>
</RelativeLayout>

Для теста я просто пытаюсь получить правку в макете, но она совсем не работает. Я уверен, что я делаю что-то глупое.

Пожалуйста, объясните мне эту проблему, и было бы очень полезно, если бы вы могли помочь мне обновить макет с другими дочерними значениями, такими как имя пользователя. Спасибо.

1 Ответ

0 голосов
/ 17 ноября 2018

Я исправил это, правильно разместив моего ребенка в пожарной базе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...