当前位置: 首页 > 知识库问答 >
问题:

BaseAdapter NotifyDatasetChanged()getView()不工作

仲孙才捷
2023-03-14

我有BaseAdapterClass forListView在我的自定义ListView项目中。现在我有TextView,并且Tow Image Button(Edit and Delete)在我的listView行中。当我启动删除查询时,从GetView()并调用notefyDataSetChanged();但那里什么也没发生。请参阅下面的代码

公共视图 getView(最终整型位置,视图转换视图,视图组父视图) {

    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()不工作……请任何人告诉我我在哪里做mistack?

共有2个答案

卢出野
2023-03-14

确保BaseAdapter方法

registerDataSetObserver(DataSetObserver observer) 
unregisterDataSetObserver(DataSetObserver observer) 

不会被覆盖。

阙佐
2023-03-14

itemDetailsrayList中进行修改时,notifyDatasetChanged()将起作用。您只执行了数据库操作,而没有从ArrayList中删除项。也从ArrayList中删除该项。它会起作用的。

 类似资料:
  • 我在开发者android上找到了GridView guide:https://developer . Android . com/guide/topics/ui/layout/GridView . html "在getView()方法的末尾,传递给该方法的位置整数用于从mThumbIds数组中选择图像,该数组被设置为ImageView的图像资源。" 我对此感到困惑。 为什么我们每次都需要调用set

  • 返回当前视图的View Object: .fullCalendar('getView') 如果你想获取当前视图的Title或者start,end属性时可以使用,例如: var view = $('#calendar').fullCalendar('getView'); alert("The view's title is " + view.title); 官方英文文档:http://arshaw.

  • 问题内容: 我有一个自定义适配器,可显示订单列表中的每一行。 从Web服务查询新的订单列表之后,我想更新ListView的内容,因此我让Activity在调用notifyDataSetChanged()之前进行更新。 但是,从不调用OrderRowAdapter的getView()方法。ListView永远不会更新。 问题答案: 原来我不被叫的问题是因为它不可见。我的布局XML已经上与它的高度。因

  • 问题内容: 你能解释一下方法吗。 我阅读了文档,它具有三个参数: :项目在我们想要其视图的项目的适配器数据集中的位置。 :如果可能,请重用旧视图。注意:使用前,应检查此视图是否为非null并具有适当的类型。如果无法转换此视图以显示正确的数据,则此方法可以创建一个新视图。 异构列表可以指定其视图类型的数量,以便此View始终具有正确的类型(请参见getViewTypeCount()和getItemV

  • 问题内容: 我知道关于“多次调用getView”的问题很少,但是我的问题没什么不同。 我有一个带有自定义行的自定义listView(使用row_layout.xml)。通常效果很好。最初,我多次调用getView时遇到问题,并使用在stackoverflow中看到的一种方法解决了该问题。(使用’usedPositions’数组)。 现在,我在日志中看到这种情况:getView pos 0,getV

  • 当您实现SpinnerAdapter时,您将获得getDropDownView,它与需要扩展时的有何不同。