适配器notifyDataSetChanged不起作用

时间:2010-10-18 10:59:42

标签: android listview arraylist adapter

编辑2:

我确实解决了我的问题,但我不知道如何:我正在移动我的代码片段,突然它起作用了。一定是错误的顺序,但它很奇怪,多次检查。谢谢你的帮助,对不起,我不能发表答案;)

您好。

我有一个列表视图,当我添加元素时,我正在尝试刷新以自我更新 基础数组列表。

以下是代码段:

private void addEvent() {
    arrlEvents.add( event );
    adptEvents.notifyDataSetChanged();
    updateSaveFile();
    filterList();
}

arrlEvents是包含事件的底层arraylist,我添加一个事件,尝试使用notifyDataSetChanged()更新列表视图,但它不起作用。有人可以帮忙吗?

感谢您的时间:)

编辑: 以下是适配器的源代码:

private ArrayAdapter<Event> adptEvents;
adptEvents = new ArrayAdapter<Event>( EventCalendar.this, R.layout.list_items, arrlEvents );

2 个答案:

答案 0 :(得分:2)

我已经看到有时它只是随机地没有通知适配器。

尝试在全局范围内将adptEvents用作受保护或公开。

我发现当它不起作用时。您可以再次重新设置适配器,只需将notifyDataSetChanged()替换为:

adptEvents = new ArrayAdapter<Event>( EventCalendar.this, R.layout.list_items, arrlEvents );

编辑:

这是我编写的App中的代码片段。

班级定义:

public class ClassName extends ListActivity implements AdapterView.OnItemSelectedListener {

全局变量:

CustomAdapter adapter;
在OnCreate()中:

adapter = new CustomAdapter(this,R.layout.layout_name,dataSet);
setListAdapter(adapter);

每当我需要通知

adapter.notifyDataSetChanged();

答案 1 :(得分:2)

arrlEvents和adptEvents之间没有持久的链接....后者只是用前者的元素初始化自己。 adptEvents无法知道arrlEvents何时发生变化。

要添加新项目,您应该调用adptEvents.add(event),而不是明确调用notifyDataSetChanged(),因为ArrayAdapter.add() does that for you automatically