编辑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 );
答案 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;
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。