在Android的自定义Listview中动态隐藏视图

在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

我有一个自定义的listview,其中有一个Textview和Imageview 现在我想隐藏或显示Listview ony中某些项目的Imageview

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文件,那就太好了。