Member 13983723 Ответов: 0

Проблема с отступающим значением из базы данных firebase plz plz


I cant add all the code but I will explain it very clearly plz bear with me 

**I KNOW I AM ASKING TOO MUCH AND IT IS ANNOYING BUT PLZ HELP ME ILL BE FOREVER IN YOUR DEBT

I STARTED LEARNING CODING RECENTLY MAYBE THATS WHY IM NOT GOOD OR MAYBE IM A LITTLE DUMB BUT I HAVE BEEN AT IT FOR A WEEK NOW I HOPE THAT YOU GUYS CAN HELP ME WITH THIS**

I picked a chat app which had 2 fragments which could be swiped I wanted to add my own fragment in it so I added a global chat app I created my self I didn't use anything from existing code so not to mess with existing I made a global folder and added my java files and layout files in app to make use of it now here is the problem I cant seem to get the current user name no matter what now plz let me explain first i have almost tried all methods plz believe me i have tried almost all methods on diff stackflow and other sites before i posted message here

ill start with how Database looks like in Firebase with a picture
These will help you understand it more i added global chat so the folder of global is mine rest is nothing to do with what i added

[This is picture of what i wana get from Database by it seems when i in my global fragment im not connected with it at all so i cant get it with getCurrentUser and when i use other methods to get it i get blank instead of the palce where name should be when i run my app][1]


[How other Data is saved in Database][2]


[This is how my Data is been saved now for the Fragment i added][3]


  [1]: https://i.stack.imgur.com/PKELr.png
  [2]: https://i.stack.imgur.com/htlpZ.png
  [3]: https://i.stack.imgur.com/m3RsQ.png



now the code i added 

    public class GlobalFragment extends Fragment {

    public static final String ANONYMOUS = "anonymous";
    public static final int DEFAULT_MSG_LENGTH_LIMIT = 1000;

    private ListView mMessageListView;
    private MessageAdapter mMessageAdapter;
    private ProgressBar mProgressBar;
    private ImageButton mPhotoPickerButton;
    private EditText mMessageEditText;
    private Button mSendButton;

    private String mUsername;
    private String myid;

    private FirebaseDatabase mFirebaseDatabase;
    private DatabaseReference mMessagesDatabaseReference;

    private DatabaseReference mRef;

    private ChildEventListener mChildEventListener;
    private FirebaseAuth mFirebaseAuth;
    private FirebaseAuth.AuthStateListener mAuthStateListener;

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

        /** TODO: Insert all the code from the NumberActivity’s onCreate() method after the setContentView method call */
        mUsername = ANONYMOUS;
        myid = StaticConfig.UID;

        mFirebaseDatabase = FirebaseDatabase.getInstance();
        mFirebaseAuth = FirebaseAuth.getInstance();

        mRef = mFirebaseDatabase.getReference();
        mRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for(DataSnapshot ds : dataSnapshot.getChildren()){
                    FriendlyMessage uinfo = new FriendlyMessage();
                    uinfo.setName(ds.child(myid).getValue(FriendlyMessage.class).getName());
                    mUsername = uinfo.getName();
                }

            }

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

            }
        });

        mMessagesDatabaseReference = mFirebaseDatabase.getReference().child("global");

        // Initialize references to views
        mProgressBar = (ProgressBar) rootView.findViewById(R.id.progressBar);
        mMessageListView = (ListView) rootView.findViewById(R.id.messageListView);
        mPhotoPickerButton = (ImageButton) rootView.findViewById(R.id.photoPickerButton);
        mMessageEditText = (EditText) rootView.findViewById(R.id.messageEditText);
        mSendButton = (Button) rootView.findViewById(R.id.sendButton);

        // Initialize message ListView and its adapter
        List<FriendlyMessage> friendlyMessages = new ArrayList<>();
        mMessageAdapter = new MessageAdapter(getActivity(), R.layout.item_message_global, friendlyMessages);
        mMessageListView.setAdapter(mMessageAdapter);

        // Initialize progress bar
        mProgressBar.setVisibility(ProgressBar.INVISIBLE);

        // ImagePickerButton shows an image picker to upload a image for a message
        mPhotoPickerButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // TODO: Fire an intent to show an image picker
            }
        });

        // Enable Send button when there's text to send
        mMessageEditText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                if (charSequence.toString().trim().length() > 0) {
                    mSendButton.setEnabled(true);
                } else {
                    mSendButton.setEnabled(false);
                }
            }

            @Override
            public void afterTextChanged(Editable editable) {
            }
        });
        mMessageEditText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(DEFAULT_MSG_LENGTH_LIMIT)});

        // Send button sends a message and clears the EditText
        mSendButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // TODO: Send messages on click
                FriendlyMessage friendlyMessage = new FriendlyMessage(mMessageEditText.getText().toString(), mUsername, null);
                mMessagesDatabaseReference.push().setValue(friendlyMessage);

                // Clear input box
                mMessageEditText.setText("");
            }
        });
        mChildEventListener = new ChildEventListener() {
            @Override
            public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
                FriendlyMessage friendlyMessage = dataSnapshot.getValue(FriendlyMessage.class);
                mMessageAdapter.add(friendlyMessage);
            }

            @Override
            public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
            }

            @Override
            public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
            }

            @Override
            public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
            }
        };
        mMessagesDatabaseReference.addChildEventListener(mChildEventListener);

        return rootView;
    }

**MessageAdapter**

    public class MessageAdapter extends ArrayAdapter<FriendlyMessage> {

    private List<FriendlyMessage> listMessage;

    public MessageAdapter(Context context, int resource, List<FriendlyMessage> objects) {
        super(context, resource, objects);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = ((Activity) getContext()).getLayoutInflater().inflate(R.layout.item_message_global, parent, false);
        }

        ImageView photoImageView = (ImageView) convertView.findViewById(R.id.photoImageView);
        TextView messageTextView = (TextView) convertView.findViewById(R.id.messageTextView);
        TextView authorTextView = (TextView) convertView.findViewById(R.id.nameTextView);

        FriendlyMessage message = getItem(position);

        boolean isPhoto = message.getPhotoUrl() != null;
        if (isPhoto) {
            messageTextView.setVisibility(View.GONE);
            photoImageView.setVisibility(View.VISIBLE);
            Glide.with(photoImageView.getContext())
                    .load(message.getPhotoUrl())
                    .into(photoImageView);
        } else {
            messageTextView.setVisibility(View.VISIBLE);
            photoImageView.setVisibility(View.GONE);
            messageTextView.setText(message.getText());
        }
        authorTextView.setText(message.getName());

        return convertView;
    }
}

    public class FriendlyMessage {

    private String text;
    private String name;
    private String photoUrl;

    public FriendlyMessage() {
    }

    public FriendlyMessage(String text, String name, String photoUrl) {
        this.text = text;
        this.name = name;
        this.photoUrl = photoUrl;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public String getName() {
        return name;
    }

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

    public String getPhotoUrl() {
        return photoUrl;
    }

    public void setPhotoUrl(String photoUrl) {
        this.photoUrl = photoUrl;
    }

}

    <RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp"
    android:background="@color/tan_background"
    tools:context=".MainActivity">

    <ListView
        android:id="@+id/messageListView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/linearLayout"
        android:stackFromBottom="true"
        android:divider="@android:color/transparent"
        android:transcriptMode="alwaysScroll"
        tools:listitem="@layout/item_message_global"/>

    <LinearLayout
        android:id="@+id/linearLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:orientation="horizontal"
        android:background="@drawable/chat_send_background_global">

        <ImageButton
            android:id="@+id/photoPickerButton"
            android:layout_width="36dp"
            android:layout_height="36dp"
            android:layout_gravity="bottom"
            android:background="@android:drawable/ic_menu_gallery" />

        <EditText
            android:id="@+id/messageEditText"
            android:layout_width="0dp"
            android:maxLines="6"
            android:hint="Type a message"
            android:background="#ffff"
            android:layout_height="33dp"
            android:layout_gravity="center_vertical"
            android:layout_weight="1"/>

        <!--<Button-->
        <!--android:id="@+id/sendButton"-->
        <!--android:layout_width="wrap_content"-->
        <!--android:layout_height="wrap_content"-->
        <!--android:layout_gravity="bottom"-->
        <!--android:enabled="false"-->
        <!--android:text="@string/send_button_label"/>-->
        <Button
            android:id="@+id/sendButton"
            android:background="@drawable/ic_send_black_24dp_global"
            android:layout_width="30dp"
            android:layout_height="40dp"
            android:layout_gravity="bottom"
            android:enabled="false"
            android:layout_weight="0.03" />

    </LinearLayout>

    <ProgressBar
        android:id="@+id/progressBar"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="?android:attr/progressBarStyleLarge" />

</RelativeLayout>


    <LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="@dimen/activity_horizontal_margin"
    android:layout_marginStart="@dimen/activity_horizontal_margin"
    android:padding="4dp"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/photoImageView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true" />

    <TextView
        android:id="@+id/nameTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity=""
        android:textColor="#9f000000"
        android:layout_weight="0"
        android:textAppearance="?android:attr/textAppearanceSmall"
        tools:text="Name" />

    <TextView
        android:id="@+id/messageTextView"
        android:layout_width="wrap_content"
        android:text="Message "
        android:textSize="15dp"
        android:layout_marginRight="@dimen/item_right_margin"
        android:gravity="center_horizontal"
        android:background="@drawable/chat_item_background_global"
        android:textColor="#fff"
        android:padding="7dp"
        android:textAlignment="textStart"
        android:clickable="true"
        android:autoLink="web"
        android:textIsSelectable="true"
        android:textEditPasteWindowLayout="@color/authui_colorActivated"
        android:layout_height="wrap_content"
        tools:ignore="RtlCompat" />

</LinearLayout>


I have a working global chat app which has can send both message and image and i trying to add it little by little but i didn't expect to be stuck here FOR A WEEK i have literally understood where the saying "Hitting your head on the wall came from "

Plz i beg you i have at it for a week but cant get the idotic username i have many methods but still cant get it sometimes printing blank name when i run app  i used even uid to some get it but i feel like crying 

if you want to know in which code i added my code to its this sorry i couldn't add the code directly because its to big i just cant get the concept why people create so many java and layouts....
https://github.com/ashwin-phadke/ZappChatt


Что я уже пробовал:

Я пытался получить его с помощью Идентификатор uid и просто через метод getcurrentuser и многие другие методы, которые я нашел повсюду в течение недели

David Crow

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

Поскольку вы "новичок", я предлагаю начать с нескольких более простых проектов, которые не связаны: чат, фрагменты или Firebase. Как только вы начнете разбираться в вещах, медленно добавляйте к ним по одной части за раз, а не пытайтесь делать все сразу (с заимствованным кодом, о котором вы мало знаете).

0 Ответов