Android 在列表视图中跳过一行
我猜列表中的每一项都会调用Android 在列表视图中跳过一行,android,android-listview,adapter,Android,Android Listview,Adapter,我猜列表中的每一项都会调用getView(),但我的问题是,如果与该行关联的数据为空,我们能否不显示该行。我只想在getView()中执行此操作 例如: 如果要在列表视图中显示其姓名的人员的警报为空。我不想在列表视图中显示该人员的姓名。在返回视图之前,您可以在最后一行中将该行的名称设置为“已过”-这应该对您有效 编辑:如果内容不为空,请确保将可见性设置为可见-否则,当ListView重用视图时,所有视图都将“消失” myView.setVisibility((myData == null) ?
getView()
,但我的问题是,如果与该行关联的数据为空,我们能否不显示该行。我只想在getView()中执行此操作
例如:
如果要在列表视图中显示其姓名的人员的警报为空。我不想在列表视图中显示该人员的姓名。在返回视图之前,您可以在最后一行中将该行的名称设置为“已过”-这应该对您有效
编辑:如果内容不为空,请确保将可见性设置为可见-否则,当ListView重用视图时,所有视图都将“消失”
myView.setVisibility((myData == null) ? View.GONE : View.VISIBLE);
嗨,朋友们,我尝试将可见性设置为“不可见”,但我仍然可以在listview中看到一个空行,所以我做了一点更改,它可以根据我的需要工作,因此如果有人需要类似的结果,值得分享
我使用列表作为源,我的要求是跳过几个应用程序,因此我将该应用程序从列表和通知数据集更改中删除
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;
}
public AppListAdapter(上下文,列表appList){
this.context=上下文;
this.appList=appList;
充气器=充气器。从(上下文);
localStorage=新的localStorage(上下文);
pm=context.getPackageManager();
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
if(convertView==null)
convertView=充气机。充气(R.layout.applist_项,父项,false);
//其他代码行
if(appName.length()==0 | | getItem(position).packageName.equals(“package.name.to.skip”)){
应用程序。移除(位置);
notifyDataSetChanged();
}
返回视图;
}
关注事项
应用程序。移除(位置)
notifyDataSetChanged()
欢迎您的建议和更正。
AzmatHunzai我不这么认为。因为列表视图中的每一行都有相同的id,所以它会将上面所有行的可见性设置为“已消失”。这是不正确的-您只需检查每一行的内容是否为空,并将可见性设置为“已消失”或“已消失”。不客气:)我们在自己的项目中使用它,太:)你能告诉我…notifyDataSetChanged()的用途是什么吗?它是否适用于这里。?尝试了此解决方案。它会在列表中创建空白位置为什么不在发送到listview之前过滤此人?是的,我已经这样做了..但我想知道有没有办法在getView()中实现这一点?你不能。在将适配器提交到listviewtry之前,必须先筛选值。当返回view@Raghav:你得到答案了吗?那最后一行代码是什么?