我猜想getView()
会为列表中的每个项目调用一次,但我的问题是,如果与该行相关联的数据为空,我们可以不显示该行吗?我只想在getView()
内部完成此操作。
例如:
如果要在列表视图中显示的人的警报为空,我不想在列表视图中显示该人的姓名。
我猜想getView()
会为列表中的每个项目调用一次,但我的问题是,如果与该行相关联的数据为空,我们可以不显示该行吗?我只想在getView()
内部完成此操作。
例如:
如果要在列表视图中显示的人的警报为空,我不想在列表视图中显示该人的姓名。
在返回View之前的最后一行,您可以将该行的可见性设置为“gone” - 这对您应该有效。
编辑:请确保如果内容不为空,则将可见性设置为可见 - 否则当ListView重用视图时所有视图都将变为“gone”。
myView.setVisibility((myData == null) ? View.GONE : View.VISIBLE);
大家好,我尝试将可见性设置为不可见,但在列表视图中仍然可以看到一个空行,所以我稍微改了一下,根据我的需求它起作用了,因此值得分享,如果有人需要类似的结果。
我使用列表作为源,我的要求是跳过一些应用程序,所以我从列表中删除了该应用程序并通知数据集更改。
public AppListAdapter(Context context, List<ApplicationInfo> appList) {
this.context = context;
this.appList = appList;
inflater = LayoutInflater.from(context);
localStorage = new LocalStorage(context);
pm = context.getPackageManager();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null)
convertView = inflater.inflate(R.layout.applist_item, parent, false);
// Other lines of code
if(appName.length()==0 || getItem(position).packageName.equals("package.name.to.skip")) {
appList.remove(position);
notifyDataSetChanged();
}
return convertView;
}
注意事项
appList.remove(position);
notifyDataSetChanged();
欢迎您提出建议和纠正。
AzmatHunzai