Java Android:使用notifyDataSetChanged更新listview

Java Android:使用notifyDataSetChanged更新listview,java,android,listview,Java,Android,Listview,我有一个列表视图,我想从对话框中编辑它。我从谷歌上读到,我需要在listview上通知DataSetChanged(),但是当我尝试这样做时,我得到一个错误: The method notifyDataSetChanged(View) is undefined for the type ListView 我的listview最初设置在我的代码顶部,只有一个: ListView listView; 然后在onload上设置一个例程 public void loadItems(){ /

我有一个列表视图,我想从对话框中编辑它。我从谷歌上读到,我需要在listview上通知DataSetChanged(),但是当我尝试这样做时,我得到一个错误:

The method notifyDataSetChanged(View) is undefined for the type ListView

我的listview最初设置在我的代码顶部,只有一个:

ListView listView;
然后在onload上设置一个例程

public void loadItems(){
    //Removed - just getting the data

     int rowCount;       
     rowCount = mCategory.size();

     listView = (ListView) findViewById(R.id.lvItems);


     int[] colors = {0, 0xFFFF0000, 0}; 
     listView.setDivider(new GradientDrawable(Orientation.RIGHT_LEFT, colors));
     listView.setDividerHeight(1);
     listView.setAdapter(new CustomAdapter());

     listView.setClickable(true);
     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

       @Override
       public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {

          loadPopup(mDescription.get(position).toString(), mCountList.get(position).toString(), mTemplatecode.get(position).toString());
       }
     });
     //Removed - Tidying up
}
自定义适配器:

class CustomAdapter extends BaseAdapter
    {

    @Override
    public int getCount() {

        return mDescription.size();
    }
@Override
public Object getItem(int arg0) {

    return null;
}

@Override
public long getItemId(int arg0) {

    return 0;
}

@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {

    LayoutInflater inf=getLayoutInflater();
    View v=inf.inflate(R.layout.noncriticalasset, arg2,false);

    TextView tv=(TextView)v.findViewById(R.id.txtOption);
    TextView tvCount=(TextView)v.findViewById(R.id.txtCount);

    tv.setText(mDescription.get(arg0).toString()); 
    tvCount.setText(mCountList.get(arg0).toString()); 

    return v;
}

}

您需要在适配器上调用
notifyDataSetChanged
,而不是在ListView本身。

您需要在适配器上调用
notifyDataSetChanged
,而不是在ListView本身。

对不起,我不知道,在适配器上调用是什么意思?感谢您的帮助,请保留“adapter=new CustomAdapter();”的类引用并调用
adapter.notifyDataSetChanged().CustomAdapter=新的CustomAdapter()?你是说数据适配器吗?正如您所看到的,它正在从listView.setAdapter(新的CustomAdapter())加载它;-我将把它添加到我的代码abo ve
adapter=new CustomAdapter()
而不是
listView.setAdapter(new CustomAdapter())。然后执行
listView.setAdapter(适配器)。更新数据时,请执行适配器。notifyDataSetChanged()
。很抱歉我不知道,在适配器上执行此操作意味着什么?感谢您的帮助,请保留“adapter=new CustomAdapter();”的类引用并调用
adapter.notifyDataSetChanged().CustomAdapter=新的CustomAdapter()?你是说数据适配器吗?正如您所看到的,它正在从listView.setAdapter(新的CustomAdapter())加载它;-我将把它添加到我的代码abo ve
adapter=new CustomAdapter()
而不是
listView.setAdapter(new CustomAdapter())。然后执行
listView.setAdapter(适配器)。更新数据时,请执行适配器.notifyDataSetChanged()
class CustomAdapter extends BaseAdapter
    {

    @Override
    public int getCount() {

        return mDescription.size();
    }
@Override
public Object getItem(int arg0) {

    return null;
}

@Override
public long getItemId(int arg0) {

    return 0;
}

@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {

    LayoutInflater inf=getLayoutInflater();
    View v=inf.inflate(R.layout.noncriticalasset, arg2,false);

    TextView tv=(TextView)v.findViewById(R.id.txtOption);
    TextView tvCount=(TextView)v.findViewById(R.id.txtCount);

    tv.setText(mDescription.get(arg0).toString()); 
    tvCount.setText(mCountList.get(arg0).toString()); 

    return v;
}