朋友,我有一个listview,内容是从webservice调用中获取的。在该webservice调用中,有
之类的字段 "OGType": "ORG" and "OGType": "GROUP"
如果单击按钮,列表视图必须显示具有“OGType”:“ORG”的项目,并隐藏具有“OGType”:“GROUP”的项目。希望你明白我的意思。请有人帮助我。提前致谢。
答案 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();
}
}