一般Adapter的监听都是在外部实现,但是由于一个Adapter涉及多个监听比较麻烦,而且所设置的监听跟Activity无关,所以想在Adapter内部设置监听
iv_delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
orm.deleteSearchHistory(account);
}
});
成功执行,但是由于没有更新数据,一直以为出错,更新后
iv_delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
orm.deleteSearchHistory(account);
notifyDataSetChanged();
}
});
以为都要结束了,还是犯了同样的问题,adapter中的数据没有改变,notifyDataSetChanged()并不会因为数据库中的数据删除而更新数据,所以真正改变的应该是重新设置一下adapter的数据
iv_delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
orm.deleteSearchHistory(account);
List<SearchHistory> datum = orm.querySearchHistory();
List<Object> history = new ArrayList<>();
history.addAll(datum);
setDatum(history);
}
});
因为Adapter设置数据是通过Adapter内部的方法,所以当我们在内部实现监听时需要重新设置一下数据。