Разница между ParseUser.getCurrentUser.getList("isFollowing").add(users.get(p)) и ParseUser.getCurrentUser.add("isFollowing", users.get(p))

Я делаю простое твиттер-приложение, в котором пользователь может следить или публиковать сообщения.

Я использую для этого parse android.

В таблице пользователей я создал столбец с именем «isFollowing», в котором указаны имена подписчиков.

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                CheckedTextView checkedTextView=(CheckedTextView)view;
                if (checkedTextView.isChecked()){
                    ParseUser.getCurrentUser().getList("isFollowing").add(users.get(position));
                }else {
                    ParseUser.getCurrentUser().getList("isFollowing").remove(users.get(position));
                }
                ParseUser.getCurrentUser().saveInBackground();
            }
        });

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

Я использую ParseUser.getCurrentUser().getList("isFollowing").add(users.get(position));, чтобы добавить имя пользователя в свой массив, что дает мне исключение нулевого указателя.

Но если я использую ParseUser.getCurrentUser.add("isFollowing", users.get(position)), то он выполняется правильно.

Почему это происходит?

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

Ответы 1

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

Вероятно, в первый момент ваш список не инициализируется, поэтому getList("isFollowing") верните null. Вы устанавливаете пустой массив [] при создании этого пользователя в это поле?

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

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

Aditya Dixit 15.12.2020 19:11

Можете ли вы ответить и на это, stackoverflow.com/questions/65312284/…

Aditya Dixit 16.12.2020 09:40

Я проверил код SDK, и ParseUser.getCurrentUser().getList("isFollowing").add(users.‌​get(position)) также должен работать, но вы должны заранее убедиться, что поле isFollowing пользователя инициализировано как минимум пустым массивом. Я отредактировал ответ.

Davi Macêdo 16.12.2020 17:08

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