Обновление количества комментариев к записи в recyclerview - PullRequest
0 голосов
/ 16 июня 2020

Действие A имеет представление переработчика, в котором каждая строка отображается как сообщение, теперь каждое сообщение имеет текстовое представление подсчета комментариев, которое запускает действие комментариев, в котором пользователь может видеть комментарии, а также добавлять комментарии.

Теперь вопрос в том, после добавления комментария, как мне обновить счетчик комментариев в этой конкретной строке представления recycler в Activity A, когда действие комментария завершается или нажав кнопку «Назад», чтобы вернуться на страницу сообщений. Но я не хочу снова перезагружать вид ресайклера, так как он отвлечет пользователя от текущего местоположения.

Пожалуйста, наставьте меня в правильном направлении. Ниже мой фрагмент кода адаптера Recyclerview.

public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
        int viewType = getItemViewType(position);
        final Posts posts = postsList.get(position);
        final viewHolderPost viewHolderPost = (viewHolderPost) viewHolder;

        viewHolderPost.commentcount_wrap.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent intent = new Intent(v.getContext(), CommentViewerActivity.class);
                        intent.putExtra("post_id", posts.getPost_id());
                        v.getContext().startActivity(intent);
                    }
                });
}

Ответы [ 3 ]

0 голосов
/ 16 июня 2020

Вы можете уведомить адаптер об изменении в определенной позиции. check: adapter.notifyItemChanged (1)

-edit-

Добавьте это в Activity A.

override fun onResume() {
    super.onResume()
    if(lastPosition != -1)
        recycler_test.adapter?.notifyItemChanged(lastPosition)
}

И ваш адаптер должен обеспечивать такой обратный вызов.

recycler_test.adapter = CustomAdapter(Controller.shared.myList){ positionClicked ->
        //This block of code will be called every time a user clicked a comment.

        lastPosition = positionClicked

        val intent = Intent(applicationContext, ActivityB::class.java)
        intent.putExtra("position", positionClicked)
        startActivity(intent)
    }
0 голосов
/ 16 июня 2020

Хорошо, вот что я бы сделал:

  1. Создать общий объект (желательно репозиторий), где я буду хранить список сообщений с комментариями в памяти.
  2. При нажатии на сообщение , Я бы вызвал метод startActivityForResult из PostActivity, чтобы открыть CommentActivity
  3. После добавления / удаления / редактирования комментария в CommentActivity я бы обновил список в репозитории и завершил sh активность с надлежащим result
  4. In PostActivity Я бы переопределил метод onActivityResult, чтобы проверить, закончил ли CommentActivity результат, который скажет мне обновить список sh в RecyclerView
  5. Если это так, я получит обновленный список из репозитория в PostActivity и обновит его в адаптере
0 голосов
/ 16 июня 2020

Вы можете использовать startActivityForResult вместо startActivity

Ref: https://developer.android.com/reference/android/app/Activity#startActivityForResult (android .content.Intent,% 20int,% 20 android .os.Bundle)

Итак, когда CommentActivity будет fini sh, предыдущее действие получит обратный вызов, который является результатом CommentActivity, вы обработаете этот результат и обновите свой адаптер recyclerview.

Надеюсь, что это поможет. :)

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