2017-08-25 71 views
0

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

示例:我有以下回收视图,它表示自定义“cart_product”对象数组中包含自定义视图的购物车。 (其中一个自定义项目的属性是“数量” - 由微调代表)。我希望能够通过从适配器更改微调器的值来更改对象的“数量”属性......如何完成此操作?而当所有的产品都删除从购物车(通过刷从适配器检测&)我想显示textvie

ScreenShot

+0

可喜的变化handle()方法的签名,以堆栈溢出!请提供一个最小,完整,可重复的示例,以便我们可以帮助您解决问题。在这里看到如何做到这一点:https://stackoverflow.com/help/mcve – meenaparam

回答

0

您可以使用回调:

在适配器创建一个接口:

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) 

如果妳需要别的东西(不是位置),只是

相关问题