如何在android中隐藏listview项?

时间:2014-07-17 06:11:03

标签: android json listview

朋友,我有一个listview,内容是从webservice调用中获取的。在该webservice调用中,有

之类的字段
 "OGType": "ORG" and  "OGType": "GROUP"

如果单击按钮,列表视图必须显示具有“OGType”:“ORG”的项目,并隐藏具有“OGType”:“GROUP”的项目。希望你明白我的意思。请有人帮助我。提前致谢。

5 个答案:

答案 0 :(得分:1)

您可以在getView班级的Adapter方法中执行此操作。那是标题 public View getView(int pos, View convertView, ViewGroup, parent)

您可以使用方法setVisibility()正确隐藏所需的元素

如需更多帮助,请查看here

答案 1 :(得分:1)

尝试将新数据(仅限ORG)设置为适配器,然后调用

adapter.notifyDataSetChanged();

答案 2 :(得分:0)

非hackish方式是从您的Collection中删除用于生成列表视图的项目,然后调用notifyDataSetChanged();

答案 3 :(得分:0)

您可以创建自定义适配器并以Array或ArrayList的形式将数据传递给它(在处理自定义适配器时,ArrayList更好)。无论何时需要在ListView中添加或删除数据,只需在ArrayList中添加或删除项目,并在自定义适配器上调用notifyDataSetChanged(),它将自动更新ListView。

在您的情况下,每当您单击一个按钮时,编辑您的ArrayList并调用您的自定义适配器的方法,名为notifyDataSetChanged(),然后调用它。您每次调用此方法时都会看到,如果您对数据进行了任何更改,ListView将自行刷新。希望它有所帮助。

注意 - 自定义适配器不是强制性的。可以使用任何适配器,例如SimpleAdapter,ArrayAdapter等

答案 4 :(得分:0)

您可以使用可见列表和过滤器列表。你应该使用"可见"为了像往常一样完成BaseAdpter,你可以将可见指针改为其他列表(全部,过滤......)

不要担心记忆,指针,你只需要每个元素一次。

public class MyAdapter extends BaseAdapter {

   private ArrayList<MyItem> visible;
   private ArrayList<MyItem> all;
   private ArrayList<MyItem> filter;

   public MyAdapter(ArrayList<MyItem> items) {
       all = items;
       visible = all; //Set all as visible
       filter = new ArrayList<Item>();
       for (Item i : items)
           if (i.getType().equals("ORG"))
               filter.add(i);

   }

   //Complete adapter using "visible"

   public void showOnlyOrg() {
      visible = filter;
      notifydatasetchanged();
   }
}