在列表视图中跳过一行

时间:2012-06-17 11:08:43

标签: android android-listview adapter

我想为列表中的每个项目调用getView(),但我的问题是,如果与该行关联的数据为空,我们是否可以不显示该行。我想只在getView ()内执行此操作。

例如:

如果名单将在列表视图中显示的人的警报为空。我不想在列表视图中显示该人的姓名。

2 个答案:

答案 0 :(得分:23)

您可以在返回视图之前在最后一行将该行的visibility设置为“已消失” - 这应该适合您。

编辑:如果内容不为空,请确保将可见性设置为可见 - 否则所有视图将在ListView重用视图时“消失”。

myView.setVisibility((myData == null) ? View.GONE : View.VISIBLE);

答案 1 :(得分:1)

Hi Pals我尝试将可见性设置为不可见但仍然可以在列表视图中看到一个空行,所以我改变了一点,它根据我的需要工作,所以如果有人需要像我一样的结果,那么值得分享。

我使用列表作为来源我的要求是跳过几个应用程序,所以我做的是从列表通知数据集更改中删除该应用程序

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(位置);
  notifyDataSetChanged();

欢迎您提出建议和更正 AzmatHunzai