0

TextviewとImageviewがあるカスタムリストビューがあります。リストビューの一部のアイテムのImageviewを非表示または表示したいと思います。

getviewメソッドを使用してこれを実行しましたが、問題は、リストビューを最初に表示したときにビューが非表示にならないのに、下にスクロールして上にスクロールすると非表示になることです。以下はコードスニペットです。前もって感謝します。

 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;
      }
    }

    }
4

2 に答える 2

1

以下のコードを試してください。それが役に立てば幸い

            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;
于 2012-08-14T10:10:50.867 に答える
0

条件を削除してください。つまり、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;
  }
于 2012-08-14T10:15:23.573 に答える