隐藏 listView 中的第一项 Android
Hide first item in listView Android
我正在开发一个 Android 项目,我尝试通过多种方式隐藏 listView 中的第一项:
如果我输入下一个代码,space 不会从 listView 中消失。
convertView.setVisibility(View.GONE);
如果我输入下一个代码,项目会隐藏,但下一个项目会出现在 2px 高度的行中。
if(condition){
convertView.setLayoutParams(new AbsListView.LayoutParams(-1,1));
convertView.setVisibility(View.GONE);
} else {
if(convertView.getVisibility() == View.GONE) {
convertView.setVisibility(View.VISIBLE);
convertView.setLayoutParams(new AbsListView.LayoutParams(-1,-2));
}
}
有人可以帮助我吗?
提前致谢
看看这个answer
与其将可见性设置为 GONE
,不如为其设置一个空布局
可以通过三种方式实现;
1 使用listview的headview并控制它;
2将itemlayout添加到一个viewGroup中,将这个viewGroup作为convertView,通过位置控制itemLayout可见与否;
3 通过不同的项目布局使用适配器的 viewType
只是想法..
我认为最好的选择是隐藏适配器中的第一项:
public class HideFirstItemListAdapter extends BaseAdapter {
private List items;
public RssListAdapter(Context context, List<RssEntry> items) {
this.context = context;
this.items = items;
}
@Override
public int getCount() {
return items.size() - 1;
}
@Override
public RssEntry getItem(int position) {
return items.get(position + 1);
}
@Override
public long getItemId(int id) {
return id;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// ...
}
}
甚至在构造函数中只存储一个子列表:
public RssListAdapter(Context context, List<RssEntry> items) {
this.context = context;
this.items = items.subList(1, items.size());
}
并保持适配器为普通适配器:
...
@覆盖
public int getCount() {
return items.size();
}
@Override
public RssEntry getItem(int position) {
return items.get(position);
}
...
我正在开发一个 Android 项目,我尝试通过多种方式隐藏 listView 中的第一项:
如果我输入下一个代码,space 不会从 listView 中消失。
convertView.setVisibility(View.GONE);
如果我输入下一个代码,项目会隐藏,但下一个项目会出现在 2px 高度的行中。
if(condition){
convertView.setLayoutParams(new AbsListView.LayoutParams(-1,1)); convertView.setVisibility(View.GONE);
} else {
if(convertView.getVisibility() == View.GONE) {
convertView.setVisibility(View.VISIBLE);
convertView.setLayoutParams(new AbsListView.LayoutParams(-1,-2));
} }
有人可以帮助我吗?
提前致谢
看看这个answer
与其将可见性设置为 GONE
,不如为其设置一个空布局
可以通过三种方式实现; 1 使用listview的headview并控制它;
2将itemlayout添加到一个viewGroup中,将这个viewGroup作为convertView,通过位置控制itemLayout可见与否;
3 通过不同的项目布局使用适配器的 viewType
只是想法..
我认为最好的选择是隐藏适配器中的第一项:
public class HideFirstItemListAdapter extends BaseAdapter {
private List items;
public RssListAdapter(Context context, List<RssEntry> items) {
this.context = context;
this.items = items;
}
@Override
public int getCount() {
return items.size() - 1;
}
@Override
public RssEntry getItem(int position) {
return items.get(position + 1);
}
@Override
public long getItemId(int id) {
return id;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// ...
}
}
甚至在构造函数中只存储一个子列表:
public RssListAdapter(Context context, List<RssEntry> items) {
this.context = context;
this.items = items.subList(1, items.size());
}
并保持适配器为普通适配器: ... @覆盖 public int getCount() { return items.size(); }
@Override
public RssEntry getItem(int position) {
return items.get(position);
}
...