Получить список подписчиков пользователей

Я пытаюсь получить подписчиков пользователей из Firebase и поместить их на RecyclerView, чтобы любой мог видеть, как в Twitter и Instagram, когда я запускаю приложение, оно возвращает ошибку.

Мой код:

открытый класс ViewFollowersFragment расширяет фрагмент { частный статический финал String TAG = "ViewFollowersFragment";

private CircleImageView myprofileimage;
private TextView username;
private ImageView arrow;
private ListView vfollowerslistview;
private DatabaseReference viewFollowersref,viewUserRef;
private FirebaseAuth mAuth;
private FirebaseListAdapter viewfollowersadapter;
private List<User> mUserList;
private User mUser;
String userid;

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

    Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);

    vfollowerslistview = (ListView) view.findViewById(R.id.viewfollowerslistview);


    arrow = (ImageView) view.findViewById(R.id.fragfollowersbackarrow);
    arrow.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            getActivity().getSupportFragmentManager().popBackStack();
            getActivity().finish();
        }
    });

    mUserList = new ArrayList<>();
    mAuth = FirebaseAuth.getInstance();
    userid = mAuth.getUid();
    viewFollowersref = FirebaseDatabase.getInstance().getReference().child("User_Account_Settings");

    viewUserRef = FirebaseDatabase.getInstance().getReference();

   setFollowers();


    return view;
}


private void setFollowers () {

    Query query = FirebaseDatabase.getInstance().getReference()
            .child("Followers")
            .child(mUser.getUser_id());
    FirebaseListOptions<UserAccountSettings> options = new FirebaseListOptions.Builder<UserAccountSettings>()
            .setLayout(R.layout.layout_user_listitem)
            .setLifecycleOwner(getActivity())
            .setQuery(query,UserAccountSettings.class)
            .build();
    viewfollowersadapter = new FirebaseListAdapter(options) {
        @Override
        protected void populateView(View v, Object model, final int position) {

            String newfol = getRef(position).getKey();
            final TextView username = v.findViewById(R.id.username);
            final CircleImageView profile_image = v.findViewById(R.id.profile_image);


            viewFollowersref.child(newfol).addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {

                    if (dataSnapshot.exists()) {
                        if (dataSnapshot.hasChild("username")) {
                            String myusername = dataSnapshot.child("username").getValue().toString();
                            username.setText(myusername);
                        }
                        if (dataSnapshot.hasChild("profileimage")) {
                            String myimage = dataSnapshot.child("profileimage").getValue().toString();

                            if (myimage.isEmpty()) {
                                profile_image.setImageResource(R.drawable.pro_pic);
                            } else {
                                Picasso.with(getActivity()).load(myimage).placeholder(R.drawable.pro_pic).into(profile_image);
                            }

                        }
                    }

                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });


            username.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent profileIntent = new Intent(getActivity(), ProfileActivity.class);
                    profileIntent.putExtra("calling_activity", "Search_Activity");
                    profileIntent.putExtra("intent_user", mUserList.get(position));
                    startActivity(profileIntent);

                }
            });

            profile_image.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent profileIntent = new Intent(getActivity(), ProfileActivity.class);
                    profileIntent.putExtra("calling_activity", "Search_Activity");
                    profileIntent.putExtra("intent_user", mUserList.get(position));
                    startActivity(profileIntent);

                }
            });

            Query userQuery = viewUserRef
                    .child("Users")
                    .orderByChild("user_id");
            userQuery.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    for (DataSnapshot singleSnapshot : dataSnapshot.getChildren()) {
                        Log.d(TAG, "onDataChange: found user: " +
                                singleSnapshot.getValue(User.class).getUsername());

                        mUserList.add(singleSnapshot.getValue(User.class));
                    }

                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
        }

    };
    vfollowerslistview.setAdapter(viewfollowersadapter);

}
}

Кажется, я не могу вписать код entirw.

Если приложение вылетает, есть трассировка стека. Посмотрите это в logcat и добавьте к своему вопросу.

Alex Mamo 30.10.2018 07:05

Вот ошибка, которая возвращается. ссылка на com.example.hope.myapplication.Utils.ViewFollowersFragment.s‌ etFollowers (ViewFoll‌ owersFragment.java:1‌ 00) в com.example.hope.myapplication.Utils.ViewFollowersFragment.o‌ nCreateView (ViewFoll‌ owersFragment. : 8‌ 9)

user10322505 30.10.2018 12:17
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
295
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Согласно вашему комментарию, вы получаете следующую ошибку:

Caused by: java.langCaused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.hope.myapplication.Models.User.getUser_id()' on a null object reference

Поскольку ваш объект mUser, для которого вы вызываете метод getUser_id(), имеет значение null. Это происходит потому, что вы вообще не инициализировали объект User в своем коде. Чтобы решить эту проблему, измените следующую строку кода:

Query query = FirebaseDatabase.getInstance().getReference()
        .child("Followers")
        .child(mUser.getUser_id());

к

Query query = FirebaseDatabase.getInstance().getReference()
        .child("Followers")
        .child(mAuth.getCurrentUser().getUid());

В котором mAuth.getCurrentUser() возвращает объект FirebaseUser, поэтому вы можете получить правильный uid.

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

user10322505 31.10.2018 19:48

Верно. В этом случае вы должны использовать вместо mAuth.getCurrentUser().getUid() uid пользователя, которого хотите отобразить, верно?

Alex Mamo 31.10.2018 19:51

Я думаю, что, упомянув «конкретный», я сбил с толку. я хотел сказать, что это любой пользователь. Чтобы иметь возможность видеть подписчиков любого пользователя

user10322505 31.10.2018 21:27

Да, вместо mAuth.getCurrentUser().getUid(), который является идентификатором текущего вошедшего в систему пользователя, вы должны использовать любой другой uid любого пользователя. Чтобы получить этот uid, сохраните этот uid под каждым пользовательским объектом, чтобы иметь возможность его использовать, верно?

Alex Mamo 31.10.2018 21:31

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

Alex Mamo 31.10.2018 21:31

Все в порядке, проблема решена?

Alex Mamo 01.11.2018 06:42

Извините, у меня не было возможности попробовать. Сначала я попробую учебные пособия, а затем дам вам отзыв. Спасибо за терпеливость.

user10322505 01.11.2018 08:22

Привет, Алекс, у меня ужасно не получается. Я пробовал код .child (Followers) .equalTo (Dy7186gzhnnwyy17); . Dy71 ... является пользовательским идентификатором любого пользователя. Он просто отображал всех пользователей.

user10322505 03.11.2018 09:28

Dy7186gzhnnwyy17 не может быть идентификатором какого-либо пользователя, не подстановочный знак - это идентификатор отдельного пользователя. Вы должны сначала получить желаемый идентификатор, а затем использовать его в своей ссылке, верно?

Alex Mamo 03.11.2018 11:00

Это должен быть uid желаемого пользователя? Позволь мне попробовать это

user10322505 03.11.2018 11:37

Приятно слышать, что это сработало :) В этом случае, пожалуйста, подумайте о том, чтобы принять мой ответ, щелкнув галочку (✔️) слева под стрелками голосования. Должен поменять цвет на зеленый. Я бы оценил это. Спасибо!

Alex Mamo 04.11.2018 10:26

Привет, Алекс, извини за беспокойство, я просто хочу спросить, можно ли передать Parcelable Arraylist, установив onclicklistener в текстовом представлении?

user10322505 07.11.2018 16:48

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

Alex Mamo 07.11.2018 16:49

Только что разместил вопрос.

user10322505 07.11.2018 17:20

Я посмотрю и, если знаю ответ, напишу вам.

Alex Mamo 07.11.2018 17:21

Другие вопросы по теме