0

我最近目睹了一个奇怪的行为,当我使用 ButterKnife 绑定适配器内的图像按钮的 OnClick 方法时,正如这个问题的标题所指出的那样。正如文档中所建议的,我声明了一个内部类 ViewHolder,所有@Bind声明都在其中发生,我也有@OnClick.

我的 ViewHolder 类如下所示:

    class ViewHolder {

    private Product product;

    @Bind(R.id.title)
    TextView text;
    @Bind(R.id.price)
    TextView price;

    public ViewHolder(View view, Product product) {
        ButterKnife.bind(this, view);
        this.product = product;
    }

    @OnClick(R.id.image_button)
    public void launchProductFragment() {
            ProductFragment fragment = new ProductFragment();
            Bundle args = new Bundle();
            args.putInt(Tools.WS_PRODUCT_GROUP_ID, product.getId());                
            FragmentTransaction ft = activity.getFragmentManager().beginTransaction();
        }
}

注意:当我直接在我的getView方法中设置一个好的旧 OnClickListener 时,点击可以正常工作,并显示预期的结果。

这是一个已知的问题?还是我在实施中所做的事情导致了它?

4

1 回答 1

1

不要传入Product构造函数,getView()Adapter.

class ViewHolder {

    private Product product;

    void bindProduct(Product product) {
        this.product = product;
    }
}

在您的适配器中执行以下操作:

@Override
public void getView(int position, View convertView, ViewGroup parent) {
    // Some code here
    holder.bindProduct(myproductlist.get(position));
    //other code...
}
于 2015-08-14T13:16:57.860 回答