如何在适配器内使用ButterKnife

Ste*_*pan 12 android listview bind android-adapter butterknife

我想使用ButterKnife绑定我在listView adpater中的视图.

我试过这个,但我不能简单地使用我的"旋转器"var.

public class WarmSpinnerAdapter extends ArrayAdapter<Warm> {

    Context context;

    public WarmSpinnerAdapter(Context context, int resource, Warm[] objects) {
        super(context, resource, objects);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = LayoutInflater.from(context).inflate(R.layout.item_spinner, null);


        return v;
    }

    @OnClick(R.id.spinner)
    public void onClick() {
        //open dialog and select
    }

    static class ViewHolder {

        @BindView(R.id.spinner)
        MyTextView spinner;

        ViewHolder(View view) {
            ButterKnife.bind(this, view);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

ome*_*aca 15

您应该将视图传递给ButterKnife以首先绑定它.

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View v = LayoutInflater.from(context).inflate(R.layout.item_spinner, null);
    ButterKnife.bind(this,v);

    return v;
}
Run Code Online (Sandbox Code Playgroud)

然后您将访问您的视图.


Eri*_*cDS 3

ButterKnife 正在将您的视图绑定到该类ViewHolder,因此WarmSpinnerAdapter无法直接访问它。相反,您应该将这部分移到类中ViewHolder

@OnClick(R.id.spinner)
public void onClick() {
    //open dialog and select
}
Run Code Online (Sandbox Code Playgroud)

从那里,您可以从适配器调用内部方法或直接在适配器内部执行逻辑ViewHolder