2011-11-27 74 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(); 
相关问题