Отключить кнопку при выполнении указанного условия c - PullRequest
1 голос
/ 26 мая 2020

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

  1. Я впервые вошел в действие (книга еще не прочитана).
  2. Я нажал кнопку -> он становится отключенным
  3. Я вернулся к списку книг, затем ввел ту же книгу (кнопка теперь включает)
  4. Я перешел на первую домашнюю страницу, повторил сценарий, и на шаге 3 он отключился

Мне нужно отключить кнопку AlreadyRead, без необходимости go на главную страницу, как?

Мой код:

public class BookData extends AppCompatActivity {

    private ArrayList<Book> books = new ArrayList<>();
    ImageView img;
    Button currently ,wantToRead, AlreadyRead, AddFavorites;
    TextView title,des;
    Book desierdBook;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_all_books);

        initViews();

        Intent i = getIntent();
        desierdBook =(Book) i.getSerializableExtra("obj");
        setData(desierdBook);
    }

    private void setData(Book book) {

        if(book.getState().equals("Read")){
            this.AlreadyRead.setEnabled(false);
        }

        title.setText(book.getTitle());
        des.setText(book.getDes());
        Picasso.get().load(book.getImg()).into(img);

    } 
}

1 Ответ

0 голосов
/ 26 мая 2020

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

Когда вы сериализуете объект и десериализуете его обратно, он создает новую копию объекта, поэтому вы не можете ожидать, что ваша копия Book сохранит это состояние независимо от того, что было отправлено в действие через Intent.

Убедитесь, что состояние "прочитано" сохраняется в базе данных при нажатии кнопки.

...