如何在标签活动中刷新列表视图?

时间:2012-01-13 09:14:11

标签: android layout android-listview adapter

您好我有一个标签活动,其中显示了项目列表(ListView)。此listview每行都有一个按钮。我在我的自定义适配器类中处理此按钮clickListener,该类扩展了BaseAdapter类。现在我想要的是当我点击此按钮时,该项应该从listview移除,listview应该刷新。怎么做?

好吧我认为我的代码可以解释它

 public View getView(final int position,  View convertView, ViewGroup parent)
{
    ViewHolder holder;

    final ActivityManager am = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);

    if(convertView==null) 
    {
             convertView = mInflater.inflate(R.layout.list_item, null);
             holder = new ViewHolder();
 //     holder.appSize = (TextView)convertView.findViewById(R.id.app_size);

              holder.appName = (TextView)convertView.findViewById(R.id.app_name);
              holder.app_icon = (ImageView)convertView.findViewById(R.id.app_icon);
              holder.button = (Button)convertView.findViewById(R.id.uninstall);
              if(kill_OR_uninstall)
              {

                       holder.button.setOnClickListener(new OnClickListener() {

                            public void onClick(View v) {

                       Intent intent = new Intent(Intent.ACTION_DELETE);
                       intent.setData(Uri.parse("package:"+package_names.get(position)));
                       context.startActivity(intent);



                     }
                    });
              }

              else
              {
                       holder.button.setText("End");
                       holder.button.setOnClickListener(new OnClickListener() {

                        public void onClick(View v) {
                        am.restartPackage(package_names.get(position));

                        }
                    });

              }

      convertView.setTag(holder);

    }

    else
    {       
                     holder = (ViewHolder) convertView.getTag();   
    }

     holder.appName.setText((String)app_details.get(position).get(APP_NAME));
     holder.app_icon.setImageDrawable((Drawable)app_details.get(position).get(APP_ICON));
  //   holder.appSize.setText(app_details.get(position).get(APP_SIZE)+ " KB");



     return convertView;

}

3 个答案:

答案 0 :(得分:1)

根据单击行的位置,从支持Collection示例的Adapter中删除项目:

myArrayList.remove(position);

然后使用以下命令通知列表数据已更改:

adapter.notifyDataSetChanged();

答案 1 :(得分:1)

你可以做到。首先在你的按钮的动作监听器中,更新列表视图的适配器(我的意思是添加/删除你不想从你的适配器中的元素),你需要调用urlistview.notifydatasetchange(true)。这将刷新列表视图

答案 2 :(得分:0)

您的代码可能有助于获得准确的答案,但高级别这是您可能需要执行的操作,您需要在实例化自定义适配器类时从正在传递的值列表中删除所选条目。在首次尝试时,您选择的条目将为空,因此您无需删除任何内容。