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);
}
最好的方法仍然是调用notify *方法。您能否显示您的代码,以便有人可以看到调用它们的问题。 –
我添加了一些可能有助于理解问题的代码。调用适配器内部的notify *方法似乎什么也不做,尽管每个适配器都会发生这种情况。通常我只是创建一个新的并将其重新分配给视图。 – sfratini
你确定你的OnClick()适配器的数据会改变吗?例如,您可能需要记录适配器的getCount(),以确保您的适配器确实看到最近添加的数据。 –