满足特定条件时禁用按钮

时间:2020-05-25 23:38:06

标签: java android view

当数据库标题等于“读取”时,我想禁用该按钮。 我的代码可以正常工作,但是会发生这种情况:

  1. 我是第一次参加活动(这本书尚未阅读)。
  2. 我点击了按钮->它被禁用了
  3. 我返回到图书列表,然后输入了同一本书(该按钮现在启用)
  4. 我转到第一个主页重复该场景,并在第3步中被禁用

我需要禁用AlreadyRead按钮,而不必转到首页,怎么办?

我的代码:

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 :(得分:0)

在我看来,您不是在数据库中“存储”该书的“已读”状态,但是我不确定,因为我看不到您的代码中单击“ AlreadyRead”时会发生什么

当您序列化一个对象并将其反序列化时,它会创建该对象的新副本,因此您无法指望Book副本会保持该状态,无论通过Intent发送给活动的对象是什么。

请确保在单击按钮时将“读取”状态保存到数据库中。