Android从适配器

时间:2017-08-25 16:17:01

标签: android performance

在我的活动中,我有一个recyclerview,每个项目视图都包含按钮。我希望能够从recyclelerview适配器更改一些UI元素和其他内容,例如我的活动中适配器本身的自定义对象数组。到目前为止,我宣称所需的观点是静态的,但我发现它是一种可怕的做法。

示例:我有以下的recyclerview代表一个装有自定义视图的购物车,来自一个自定义" cart_product"对象。 (这个定制对象的一个​​特征是"数量" - 由微调器代表)。我希望能够改变对象"数量"通过改变适配器的微调器值来实现...如何做到这一点?当所有产品都从购物车中取出时(通过滑动和从适配器中检测到)我想显示一个textvie

ScreenShot

1 个答案:

答案 0 :(得分:2)

您可以使用回调:

在适配器中创建一个接口:

public interface EnentHandler {
    void handle(int position) // if u need know position. If no, just create method without params
}

在适配器中创建接口的私有实例:

public class YourAdapter extends RecyclerView.Adapter<YourHolder> {
    private EventHanlder handler;
}

在活动中实施EventHanlder

public class Mainacitivity extends Activity implements YourAdapter.EnentHandler {
//.....
    @Override
    void handle (int position) {
        // TODO do whatever u want
    }
}

EnentHandler添加到构造函数参数:

public YourAdapter (List<YourObject> data, EnentHandler handler) {
    //....
    this.handler = handler;
}

当您需要更改UI调用时

handler.hanlde(position);

最后,在初始化适配器

时传递this
adapter = new YourAdapter (data, this)

如果你需要其他东西(不是位置),只需更改handle()方法

的签名即可