2017-08-25 72 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) 

如果妳需要別的東西(不是位置),只是