BaseAdapter NotifyDatasetChanged()getView()不工作

时间:2013-06-27 12:08:54

标签: android

我的自定义BaseAdapter项目中ListViewListView个班级。现在我有TextView,并且拖动图像按钮(编辑和删除)位于我的listView行中。当我是火时删除查询从GetView()并调用notifyDataSetChanged();但没有发生任何事情。请参阅以下代码:

public View getView(final int position,View convertView,ViewGroup parentView){

    ViewHolder holder ; 
    holder = new ViewHolder();
    convertView = mInflater.inflate(R.layout.local_jobs_list_row , null);

    holder.job_name = (TextView) convertView.findViewById(R.id.txt_job_name);
    holder.img_edit = (ImageButton) convertView.findViewById(R.id.icon_edit_job);
    holder.img_delete = (ImageButton) convertView.findViewById(R.id.icon_delete_job);

    convertView.setTag(holder);

    holder.img_delete.setTag(itemDetailsrrayList.get(position).getLocal_job_id());
    holder.img_delete.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(final View v) {

            db.open();
            db.deleteLocalJob(String.valueOf(v.getTag()));
            db.close();
            notifyDataSetChanged();

        }
    });

    holder.job_name.setText(itemDetailsrrayList.get(position).getLocal_job_name());


    return convertView;
}

这里notifyDatasetChanged()没有工作......请有人告诉我我在哪里犯错误?

2 个答案:

答案 0 :(得分:7)

notifyDatasetChanged()进行修改时,

itemDetailsrrayList将有效。您只进行数据库操作而不是从ArrayList中删除项目。也从ArrayList移除项目。它会起作用。

答案 1 :(得分:4)

确保BaseAdapter方法

registerDataSetObserver(DataSetObserver observer) 
unregisterDataSetObserver(DataSetObserver observer) 

没有被覆盖。