我有一个ListView,一个ArrayList和一个扩展ArrayAdapter的MaterielAdapter。我的问题是调用notifyDataSetChanged()不会更新我的ListView ...我花了3个小时在SO上尝试所有类似的问题,但没有一个对我有效。
<script> var pixeldata = <?php echo json_encode($pixel, JSON_HEX_TAG); ?>;
</script>
我的收藏包含所有对象,但listview永远不会刷新,也不是适配器......
答案 0 :(得分:1)
您可能甚至没有将ListView添加到活动视图中。我建议您在布局xml中定义listview,而不是使用新的Listview(this) 类似的东西:
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
然后在你的活动中:
lvObjects = (ListView) findViewById(R.id.listview);
答案 1 :(得分:1)
找到解决方案
我的问题是我在将ArrayList设置为另一个ArrayList
materiels = getMateriels() // getMateriels() returns an ArrayList<Materiel>
似乎在列表中设置一个新对象不起作用,我最终做的是以下内容:
materiels.clear();
materiels.addAll(getMateriels());
顺便说一句,对于那些需要在ListView中有标题的人来说,你必须这样做:
((YourAdapter)((HeaderViewListAdapter)yourListView.getAdapter()).getWrappedAdapter()).notifyDataSetChanged();
答案 2 :(得分:0)
存放您的适配器,您的适配器也将是您的列表。
MaterialAdapter adapter = new MaterialAdapter(this,
R.layout.object_line);
lvObjects = new ListView(this);
lvObjects.setAdapter(adapter);
...
adapter.add(new Object());
adapter.notifyDataSetChanged();
Currenlty你的适配器,不知道他需要使用你在参数中传递的列表。但是你扩展了ArrayAdapter,这意味着你的适配器是一个列表。