Java Android:使用notifyDataSetChanged更新listview
我有一个列表视图,我想从对话框中编辑它。我从谷歌上读到,我需要在listview上通知DataSetChanged(),但是当我尝试这样做时,我得到一个错误: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(){ /
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 veadapter=new CustomAdapter()
而不是listView.setAdapter(new CustomAdapter())代码>。然后执行listView.setAdapter(适配器)代码>。更新数据时,请执行适配器。notifyDataSetChanged()
。很抱歉我不知道,在适配器上执行此操作意味着什么?感谢您的帮助,请保留“adapter=new CustomAdapter();”的类引用并调用adapter.notifyDataSetChanged()代码>.CustomAdapter=新的CustomAdapter()?你是说数据适配器吗?正如您所看到的,它正在从listView.setAdapter(新的CustomAdapter())加载它;-我将把它添加到我的代码abo veadapter=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;
}