【问题标题】:How to call notifyDataSetChanged() from custom adapter?如何从自定义适配器调用 notifyDataSetChanged()?
【发布时间】:2013-03-31 07:47:47
【问题描述】:

我有一个自定义 ListView,其中每个项目都分为两部分。一个是描述,另一个是删除按钮。所以从我的适配器的 getView() 方法中,我在两者上都设置了 onClickListener()。如果用户点击描述部分然后它将打开一个新活动,如果用户单击删除按钮,则列表项将被删除。我的问题是我无法在从列表视图中删除项目后刷新列表。我不知道从哪里以及如何在适配器中调用 notifyDataSetChanged() 以刷新我的列表视图。

我的适配器的 getView() 方法如下所示:

 @Override
 public View getView(final int position, View convertView, ViewGroup parent) {
     // TODO Auto-generated method stub

     ViewHolder holder = null;
     if (convertView == null) {
         LayoutInflater inflator = ((Activity) context).getLayoutInflater();
         convertView = inflator.inflate(R.layout.list_item, null);
         holder = new ViewHolder();

         holder.listCount = (TextView) convertView
             .findViewById(R.id.listCount);
         holder.Number = (TextView) convertView
             .findViewById(R.id.Value);
         holder.journey = (TextView) convertView.findViewById(R.id.journey);
         holder.Item = (RelativeLayout) convertView
             .findViewById(R.id.Item);
         holder.delete = (LinearLayout) convertView
             .findViewById(R.id.delete);
         convertView.setTag(holder);
     } else {
         holder = (ViewHolder) convertView.getTag();
     }
     p = getItem(position);

     holder.listCount.setText(position + 1 + ".");
     holder.Number.setText(p.getNumber());
     holder.journey.setText(p.getPoint() + "-" +
         p.getUpto());
     holder.Item.setOnClickListener(new OnClickListener() {
         @Override
         public void onClick(View v) {
             Point pp = pLists.get(position);
             Intent intent = new Intent(context, abc.class);
             Bundle bundle = new Bundle();
             bundle.putString("Number", p.getNumber());
             bundle.putBoolean("isInDatabase", true);
             intent.putExtras(bundle);
             context.startActivity(intent);
         }
     });

     holder.delete.setOnClickListener(new OnClickListener() {

         @Override
         public void onClick(View arg0) {

             new deletingSelected().execute(pLists.get(position).get_id());
         }
     });
     return convertView;
 }

该项目已通过 OnClick 删除,但我应该将 notifyDataSetChanged() 的代码放在哪里?

请帮忙

【问题讨论】:

    标签: android listview adapter


    【解决方案1】:

    在你的 onClick 删除后调用 notifyDataSetChanged()

    【讨论】:

      猜你喜欢
      • 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
      相关资源
      最近更新 更多