编辑:请不要建议接口。
我有一个里面有 RecyclerView 的 Activity。我想在创建适配器时通过 otto 将一个事件从适配器发布到活动。我使用了以下代码:
ShoppingCardAdapter
public class ShoppingCardAdapter extends RecyclerView.Adapter<ShoppingCardAdapter.ViewHolder> {
private Activity activity;
private CardBook cardbook;
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public TextView tvBookName;
public ViewHolder(View v) {
super(v);
tvBookName = (TextView) itemView.findViewById(R.id.tv_book_name);
}
@Override
public void onClick(View view) {
setTotalFactor();
}
}
public ShoppingCardAdapter(Activity activity, Realm realm) {
this.activity = activity;
dataSet = realm.where(CardBook.class).equalTo("userId", userId).findAll();
setTotalFactor();
}
@Override
public ShoppingCardAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.shopping_card_item, parent, false);
ViewHolder vh = new ViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
CardBook cardBook = dataSet.get(position);
holder.tvBookName.setText(cardBook.getName());
}
@Override
public int getItemCount() {
return dataSet.size();
}
private void setTotalFactor() {
BusProvider.getInstance().post(new ShoppingCardBooksChangeEvent(dataSet.size(), String.valueOf(dataSet.sum("price"))));
}}
在ShoppingCardActivity
@Subscribe
public void shoppingCardBooksChanged (ShoppingCardBooksChangeEvent shoppingCardBooksChangeEvent) {
Log.i("OTTO TEST", "come on :)");
}
@Override protected void onResume() {
super.onResume();
BusProvider.getInstance().register(this);
checkBuyValidation();
}
@Override protected void onPause() {
super.onPause();
BusProvider.getInstance().unregister(this);
}
为什么日志不显示?