Android setVisibility(View.INVISIBLE)不在ListView的第一行上工作

Android setVisibility(View.INVISIBLE)不在ListView的第一行上工作,android,listview,android-listview,Android,Listview,Android Listview,setVisibility(View.INVISIBLE)在创建ListView时,在ListView的第一行上不起作用。但当我向下滚动和向上滚动时,它工作正常 我的代码: public class AudioListAdapter extends ArrayAdapter<GalleryItem>{ private Context context; private int layoutResourceId; private ArrayList<Gal

setVisibility(View.INVISIBLE)
在创建
ListView
时,在
ListView的第一行上不起作用。但当我向下滚动和向上滚动时,它工作正常

我的代码:

public class AudioListAdapter extends ArrayAdapter<GalleryItem>{

    private Context context;
    private int layoutResourceId;
    private ArrayList<GalleryItem> data = new ArrayList<GalleryItem>();
    private ArrayList<Boolean> isPlaying = new ArrayList<Boolean>();
    boolean isPlaying1;
    final MediaPlayer mediaPlayer = new MediaPlayer();

    public AudioListAdapter(Context context, int resource, ArrayList<GalleryItem> data) {
        super(context, resource, data);
        this.layoutResourceId = resource;
        this.context = context;
        this.data = data;
        Iterator<GalleryItem> iterator = data.iterator();
        while (iterator.hasNext()) {
            GalleryItem galleryItem = (GalleryItem) iterator.next();
            isPlaying.add(false);
        }
        //notifyDataSetChanged();
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        //return super.getView(position, convertView, parent);
        final ViewHolder holder;
        //View row = convertView;

        if (convertView == null) {
            LayoutInflater inflater = LayoutInflater.from(context);
            convertView = inflater.inflate(layoutResourceId, parent, false);

            holder = new ViewHolder();

            holder.playImage = (ImageView) convertView.findViewById(R.id.audio_play_image);
            holder.stopImage = (ImageView) convertView.findViewById(R.id.audio_stop_image);
            holder.title = (TextView) convertView.findViewById(R.id.audio_title);
            holder.duration = (TextView) convertView.findViewById(R.id.audio_duration);
            isPlaying.set(position, false);
            //convertView.setTag(holder);
        }else{
            holder = (ViewHolder) convertView.getTag();
            LogUtils.d("TEST", holder.title.getText().toString());
        }




        final GalleryItem item =  data.get(position);
        System.out.println(item.getDateModified());

        holder.title.setText(item.getTitle());
        holder.title.setSelected(true);
        holder.duration.setText("00:00");
        if (isPlaying.get(position)) {
            holder.playImage.setVisibility(View.INVISIBLE);
            holder.stopImage.setVisibility(View.VISIBLE);
        }else{
            holder.playImage.setVisibility(View.VISIBLE);
            holder.stopImage.setVisibility(View.INVISIBLE);
        }

        OnClickListener audioControlsListener = new OnClickListener() {

            @Override
            public void onClick(View v) {
                if (isPlaying.get(position)) {
                    if (mediaPlayer.isPlaying()) {
                        mediaPlayer.stop();
                    }
                    mediaPlayer.reset();
                    isPlaying.set(position, false);
                    holder.playImage.setVisibility(View.VISIBLE);
                    holder.stopImage.setVisibility(View.INVISIBLE);
                }else{
                    holder.playImage.setVisibility(View.INVISIBLE);
                    holder.stopImage.setVisibility(View.VISIBLE);
                    for(int i=0 ; i< isPlaying.size();i++){
                        isPlaying.set(i, false);
                    }
                    try {
                        mediaPlayer.reset();
                        mediaPlayer.setDataSource(item.getPath());
                        mediaPlayer.prepare();
                    } catch (IllegalStateException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    mediaPlayer.start();
                    isPlaying.set(position, true);
                    notifyDataSetChanged();
                }
            }
        };
        holder.playImage.setOnClickListener(audioControlsListener);
        holder.stopImage.setOnClickListener(audioControlsListener);
        convertView.setTag(holder);
        return convertView;
    }

    static class ViewHolder{
        TextView title;
        TextView duration;
        ImageView playImage;
        ImageView stopImage;

    }
}
公共类AudioListAdapter扩展了ArrayAdapter{
私人语境;
私人内部布局资源;
private ArrayList data=new ArrayList();
private ArrayList isPlaying=new ArrayList();
布尔isPlaying1;
最终MediaPlayer=新MediaPlayer();
公共AudioListAdapter(上下文、int资源、ArrayList数据){
超级(上下文、资源、数据);
this.layoutResourceId=资源;
this.context=上下文;
这个数据=数据;
迭代器迭代器=data.Iterator();
while(iterator.hasNext()){
GalleryItem GalleryItem=(GalleryItem)迭代器.next();
isPlaying.add(false);
}
//notifyDataSetChanged();
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
//返回super.getView(position、convertView、parent);
最终持票人;
//视图行=转换视图;
if(convertView==null){
LayoutFlater充气机=LayoutFlater.from(上下文);
convertView=充气机。充气(layoutResourceId,父项,false);
holder=新的ViewHolder();
holder.playImage=(ImageView)convertView.findViewById(R.id.audio\u play\u image);
holder.stopImage=(ImageView)convertView.findViewById(R.id.audio\u stop\u image);
holder.title=(TextView)convertView.findViewById(R.id.audio\u title);
holder.duration=(TextView)convertView.findViewById(R.id.audio\u duration);
显示。设置(位置,错误);
//convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
LogUtils.d(“TEST”,holder.title.getText().toString());
}
最终GalleryItem项=data.get(位置);
System.out.println(item.getDateModified());
holder.title.setText(item.getTitle());
持有人。头衔。选择(真实);
持有人。期限。设定文本(“00:00”);
if(isplay.get(位置)){
holder.playImage.setVisibility(视图不可见);
holder.stopImage.setVisibility(视图.可见);
}否则{
holder.playImage.setVisibility(View.VISIBLE);
holder.stopImage.setVisibility(视图.不可见);
}
OnClickListener audioControlsListener=新的OnClickListener(){
@凌驾
公共void onClick(视图v){
if(isplay.get(位置)){
if(mediaPlayer.isPlaying()){
mediaPlayer.stop();
}
mediaPlayer.reset();
显示。设置(位置,错误);
holder.playImage.setVisibility(View.VISIBLE);
holder.stopImage.setVisibility(视图.不可见);
}否则{
holder.playImage.setVisibility(视图不可见);
holder.stopImage.setVisibility(视图.可见);
对于(int i=0;i
设置可见性(视图.不可见)仍不工作。但是我只使用了一个ImageView,并在需要时替换了该图像。这对我很有效。

您确定要使用
View.INVISIBLE
而不是
View.GONE
?我想使用View.INVISIBLE。我也试过View.GONE,但不工作可能不是您的问题,但您需要取消对行
convertView.setTag(holder)的注释我在返回convertview之前添加了它;但我也试过了,它不起作用。