在Android的自定义Listview中动态隐藏视图
我有一个自定义的listview,其中有一个Textview和Imageview 现在我想隐藏或显示Listview ony中某些项目的Imageview在Android的自定义Listview中动态隐藏视图,android,listview,dynamic,view,hide,Android,Listview,Dynamic,View,Hide,我有一个自定义的listview,其中有一个Textview和Imageview 现在我想隐藏或显示Listview ony中某些项目的Imageview public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; holder = new ViewHolder(); convertView = mIn
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.jazzartist, null);
holder.albumsView = (TextView)convertView.findViewById(R.id.artist_albums_textview);
holder1.objimg = (ImageView)convertView.findViewById(R.id.drag);
if(position == 4){
(holder1.objimg).setVisibility(View.INVISIBLE); // here I am hiding Imageview for position 4
}
else
{
(holder1.objimg).setVisibility(View.VISIBLE); // here I am showing Imageview for rest of items
}
String albums = getItem(position).albums;
holder1.albumsView.setText(albums);
return convertView;
}
我使用getview方法实现了这一点,但问题是,当Listview第一次显示时,视图不会隐藏,但当我向下滚动并向上滚动时,视图会隐藏。下面是代码片段。提前谢谢
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
ViewHolder holder;
if (v != convertView && v != null) {
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.jazzartist, null);
holder.albumsView = (TextView)convertView.findViewById(R.id.artist_albums_textview);
v.setTag(holder);
}
else{
holder = (ViewHolder) convertView.getTag(); }
ViewHolder holder1 = (ViewHolder) v.getTag();
holder1.objimg = (ImageView)convertView.findViewById(R.id.drag);
if(position == 4){
(holder1.objimg).setVisibility(View.INVISIBLE); // here I am hiding Imageview for position 4
}
else
{
(holder1.objimg).setVisibility(View.VISIBLE); // here I am showing Imageview for rest of items
}
String albums = getItem(position).albums;
holder1.albumsView.setText(albums);
return v;
}
}
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.jazzartist, null);
holder.albumsView = (TextView)convertView.findViewById(R.id.artist_albums_textview);
holder1.objimg = (ImageView)convertView.findViewById(R.id.drag);
if(position == 4){
(holder1.objimg).setVisibility(View.INVISIBLE); // here I am hiding Imageview for position 4
}
else
{
(holder1.objimg).setVisibility(View.VISIBLE); // here I am showing Imageview for rest of items
}
String albums = getItem(position).albums;
holder1.albumsView.setText(albums);
return convertView;
}
试试下面的代码。希望能有帮助
ViewHolder holder;
if(convertView == null)
{
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.jazzartist, null);
holder.albumsView = (TextView)convertView.findViewById(R.id.artist_albums_textview);
holder.objimg = (ImageView)convertView.findViewById(R.id.drag);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
if(position == 4)
{
holder.objimg.setVisibility(View.INVISIBLE); // here I am hiding Imageview for position 4
}
else
{
holder.objimg.setVisibility(View.VISIBLE); // here I am showing Imageview for rest of items
}
String albums = getItem(position).albums;
holder.albumsView.setText(albums);
return convertView;
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.jazzartist, null);
holder.albumsView = (TextView)convertView.findViewById(R.id.artist_albums_textview);
holder1.objimg = (ImageView)convertView.findViewById(R.id.drag);
if(position == 4){
(holder1.objimg).setVisibility(View.INVISIBLE); // here I am hiding Imageview for position 4
}
else
{
(holder1.objimg).setVisibility(View.VISIBLE); // here I am showing Imageview for rest of items
}
String albums = getItem(position).albums;
holder1.albumsView.setText(albums);
return convertView;
}
请删除条件,即if else(不检查convertView)
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.jazzartist, null);
holder.albumsView = (TextView)convertView.findViewById(R.id.artist_albums_textview);
holder1.objimg = (ImageView)convertView.findViewById(R.id.drag);
if(position == 4){
(holder1.objimg).setVisibility(View.INVISIBLE); // here I am hiding Imageview for position 4
}
else
{
(holder1.objimg).setVisibility(View.VISIBLE); // here I am showing Imageview for rest of items
}
String albums = getItem(position).albums;
holder1.albumsView.setText(albums);
return convertView;
}
不要用这条线。。视图v=super.getView(位置、转换视图、父级);使用视图v=转换视图;如果我删除该行,应用程序将崩溃请尝试Braj给出的代码。。。这也是一个很好的代码…不起作用。事实上,在我上下滚动之后,视图并没有被隐藏。这对我来说也不起作用。事实上,在我上下滚动之后,视图并没有被隐藏。视图保持不变。有什么解决办法吗?我做了一些小改动。试试看,这已经奏效了。我已经接受了解决方案,请告诉我滚动时出现了什么问题?在这个解决方案中,位置4之后的图像位置似乎扭曲了。我把它放在最左边,但它是在Textviews之后出现的问题是什么?实际上,在您的原始代码中,您使用了两个ViewHolder。我到了1点。使用viewHolder模式,在getView方法中控制视图非常容易。就新问题而言,我认为膨胀的xml文件有问题。如果你也能发布膨胀的xml文件,那就太好了。