我正在努力刷新Android中的列表,但似乎无法做到正确。
我使用了notifyDataSetChanged();在我认为适用的每一点(当前使用对话框进行输入),但它不起作用,我已经到了遍布整个地方的地方,它仍然不会刷新。
我是否正确地说这应该在您查看时刷新列表,否则它将重建列表并且您仍然需要刷新视图?
如果有人对建议列表的定位有任何建议,我很乐意听到。
答案 0 :(得分:1)
这是ListActivity吗?我目前在我的项目中有一个ListActivity,并且我在其中有自己的适配器类,它扩展了ArrayAdapter。
我的经验是在扩展列表适配器类实例上调用notifyDataSetChanged()会立即导致刷新显示的列表View。因此,只要在我的适配器实例上调用.notifyDataSetChanged(),就会重新生成列表View,因此会调用我的适配器的getView()实现来再次生成每个单独的行视图。因此,用户选择一个上下文菜单项,该项触发对数据的一些更改,然后调用.notifyDataSetChanged(),屏幕立即刷新新数据。
所以要添加一些代码片段要清楚:
我有一个ListActivity
public class VarListActivity extends ListActivity {
在其中,我扩展了ArrayAdapter
class VarAdapter extends ArrayAdapter{
...
@Override
public View getView(int position, View convertView, ViewGroup parent){
// Creates the views based upon myData
...
@Override
public int getCount(){
...
我创建了该数组适配器的实例
la = new VarAdapter(this, R.layout.row0);
选择上下文菜单项时
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.a_context_menu_option:
// Does a call to perform modifications to myData
la.notifyDataSetChanged();
return true;
我只是把这一切都放下来以防万一与你的情况有任何相似之处,但我们真的需要了解你的代码。