【问题标题】:BaseAdapter NotifyDatasetChanged() getView() Not WorkingBaseAdapter NotifyDatasetChanged() getView() 不工作
【发布时间】:2013-06-27 12:08:53
【问题描述】:

我的自定义ListView 项目中有ListViewBaseAdapter 类。现在我有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() 不工作......请任何人告诉我我在哪里犯了错误?

【问题讨论】:

    标签: android


    【解决方案1】:

    当您在itemDetailsrrayList 中进行修改时,notifyDatasetChanged() 将起作用。您只执行数据库操作,而不是从 ArrayList 中删除项目。也从 ArrayList 中删除项目。它会起作用的。

    【讨论】:

      【解决方案2】:

      确保BaseAdapter方法

      registerDataSetObserver(DataSetObserver observer) 
      unregisterDataSetObserver(DataSetObserver observer) 
      

      未被覆盖。

      【讨论】:

      • 能不能给个解释和方法,怎么用?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多