2011-11-27 72 views
0

我正在使用一個適配器,它在ListView的每個項目上都有幾個按鈕。我有,例如兩個按鈕。一個用於保存,另一個用於刪除。從適配器的活動調用方法

當我點擊它們時,我想刷新適配器。我有一個方法在我的活動上做到這一點:更新適配器。我做了它,因爲我無法使適配器的通知方法工作。

我將活動作爲參數發送到適配器,然後從適配器調用更新方法,因爲我正在設置適配器中每個按鈕的OnClick方法。

問題是,它似乎並不總是工作。我猜測它必須對活動的週期和Android清理內存做些事情,但我似乎無法理解問題出在哪裏。

我知道這是一個醜陋的做法,所以最好的辦法是什麼?

摘要:我需要刷新從適配器本身的適配器,當我刪除ListView中的項目或更新(BaseAdapter)

編輯: 我加入一些代碼。這是我的我的適配器的構造:

public SpendingPlanAdapter(Context context, SpendingPlan sp, int month, int year, money.activities.SpendingPlan act) 

適配器裏面我有附加到按鈕的OnCLickListener。我打電話這樣的更新方法(結果是一個數據庫插入的結果):

if (result){ 
        Toast.makeText(context, context.getResources().getString(R.string.succesfully_deleted), Toast.LENGTH_LONG).show();     
        act.updateAdapter();      
       } else { 
        Toast.makeText(context, context.getResources().getString(R.string.oops), Toast.LENGTH_LONG).show();} 

這是我UpdateAdapter方法:

public void updateAdapter(){   
     SpendingPlanAdapter adapter = new SpendingPlanAdapter(getApplicationContext(), currentSp, currentMonth, currentYear, this); 
     limitList.setAdapter(adapter); 
    } 
+1

最好的方法仍然是調用notify *方法。您能否顯示您的代碼,以便有人可以看到調用它們的問題。 –

+0

我添加了一些可能有助於理解問題的代碼。調用適配器內部的notify *方法似乎什麼也不做,儘管每個適配器都會發生這種情況。通常我只是創建一個新的並將其重新分配給視圖。 – sfratini

+0

你確定你的OnClick()適配器的數據會改變嗎?例如,您可能需要記錄適配器的getCount(),以確保您的適配器確實看到最近添加的數據。 –

回答

0

您可以致電updateAdapter()這樣

(SpendingPlan (context)).updateAdapter(); 
相關問題