在我的活动中,我有一个recyclerview,每个项目视图都包含按钮。我希望能够从recyclelerview适配器更改一些UI元素和其他内容,例如我的活动中适配器本身的自定义对象数组。到目前为止,我宣称所需的观点是静态的,但我发现它是一种可怕的做法。
示例:我有以下的recyclerview代表一个装有自定义视图的购物车,来自一个自定义" cart_product"对象。 (这个定制对象的一个特征是"数量" - 由微调器代表)。我希望能够改变对象"数量"通过改变适配器的微调器值来实现...如何做到这一点?当所有产品都从购物车中取出时(通过滑动和从适配器中检测到)我想显示一个textvie
答案 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()
方法