0

この質問のタイトルで指摘されているように、ButterKnife を使用してアダプター内の画像ボタンの OnClick メソッドをバインドしたときに、最近、奇妙な動作を目撃しました。@Bindドキュメントで示唆されているように、すべての宣言が行われる内部クラス ViewHolder を宣言しました@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();
        }
}

注: 古き良き OnClickListener をgetViewメソッドに直接設定すると、クリックが適切に機能し、期待される結果が表示されます。

これは既知の問題ですか? または、実装で行ったことが原因ですか?

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 に答える