这里在适配器中使用调用 notifyDataSetChanged();,界面无效果

这里在适配器中使用调用 notifyDataSetChanged();,界面无效果

@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, final ViewGroup parent) {
   ChildViewHolder childViewHolder;
   if (convertView == null) {
       convertView = LayoutInflater.from(context).inflate(R.layout.child_item_layout, null);
       childViewHolder = new ChildViewHolder();
       childViewHolder.textView = convertView.findViewById(R.id.dish_child_item);
       convertView.setTag(childViewHolder);
   } else {
       childViewHolder = (ChildViewHolder) convertView.getTag();
   }
   final Dish dish = typeLists.get(groupPosition).getDishes().get(childPosition);
   childViewHolder.textView.setText(dish.getName() + "");
   //子项设置长按时间
   convertView.setOnLongClickListener(new View.OnLongClickListener() {
       @Override
       public boolean onLongClick(View v) {
           AlertDialog.Builder builder = new AlertDialog.Builder(context);
           builder.setTitle("你确定要删除" + dish.getName() + "?");
           builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
               @Override
               public void onClick(DialogInterface dialog, int which) {
                   Uri uri = Uri.parse("content://com.imooc.menuprovider");
                   context.getContentResolver().delete(uri,null,new String[]{dish.getId().toString()});
                   //删除成功:通知主界面刷新数据
                   notifyDataSetChanged();
                   //
               }
           }).setNeutralButton("取消", new DialogInterface.OnClickListener() {
               @Override
               public void onClick(DialogInterface dialog, int which) {
                   dialog.dismiss();
               }
           });
           builder.show();
           return true;
       }
   });
   return convertView;
}

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
irista23 2019-01-16 09:22:57

执行完context.getContentResolver().delete(uri,null,new String[]{dish.getId().toString()});删除后,还需要在集合中删除此条数据,调用typeLists.get(groupPosition).remove(dish);最后再调用notifyDataSetChanged()

  • 提问者 痕禾 #1
    typeLists.get(groupPosition).getDishes().remove(dish); notifyDataSetChanged(); 界面还是无效果
    2019-01-16 09:50:35
  • irista23 回复 提问者 痕禾 #2
    确保在Activity中重写的onResume() 重新调用了数据处理
    2019-01-16 10:02:07
  • irista23 回复 提问者 痕禾 #3
    并且重新调用了setAdapter()设置适配器的方法
    2019-01-16 10:03:51
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Android网络操作与数据存储2018版
  • 参与学习           人
  • 提交作业       307    份
  • 解答问题       1613    个

本专题是联网及数据处理的必备技能。课程从网络基础知识到线程间协同工作、异步下载处理。介绍了Android内外部文件存储、轻量级数据库SQLite的使用。利用屏幕适配、状态保持、百度地图解决实际问题。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师