Скрыть кнопку из RecyclerView от внешней деятельности - PullRequest
0 голосов
/ 26 марта 2020

Я создал приложение чата, которое использует RecyclerView для создания сообщений.

Деятельность, в которой все действия чата, называются ChatActivity.

В некоторых В случаях, RecyclerView создает сообщение, содержащее кнопку Confirm.

enter image description here

Кнопка имеет listener для RecyclerView и все это работает.

Мне бы хотелось, чтобы после того, как пользователь нажал на Confirm, visibility кнопки будет установлено на GONE.

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

ChatAdapter.OnConfirmClickListener confirmListener = new ChatAdapter.OnConfirmClickListener(){
    @Override
    public void onClick(Button confirmB) {

        Log.d( "ERROR", "error" );

        DocumentReference IsConfirmed = db.collection( "Chats" ).document( chatID );
        IsConfirmed
                .update( "ConfirmedFlag", auth.getUid() )
                .addOnSuccessListener( new OnSuccessListener<Void>() {
                    @Override
                    public void onSuccess(Void aVoid) {

                        Button confirm = findViewById( R.id.Confirm );
                        confirm.setVisibility( View.GONE );
                        Log.d( "WHAT", "DocumentSnapshot successfully updated!" );

                    }
                } )
                .addOnFailureListener( new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Log.w( "WHAT", "Error updating document", e );
                    }
                } );


    }
};

Есть причина, по которой он не работает? Я подумал, может быть, есть проблема с View?

Кроме того, возможно, из-за того, что он был создан внутри адаптера, невозможно установить visibility в GONE, но я не уверен.

Спасибо

1 Ответ

1 голос
/ 26 марта 2020

Вместо:

Button confirm = findViewById( R.id.Confirm );
confirm.setVisibility( View.GONE );

Замените на это:

confirmB.setVisibility( View.GONE );

Я надеюсь, что будет полезно

...