首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setVisibility(View.INVISIBLE)不处理ListView的第一行

setVisibility(View.INVISIBLE)不处理ListView的第一行
EN

Stack Overflow用户
提问于 2015-01-21 18:50:16
回答 1查看 658关注 0票数 0

创建setVisibility(View.INVISIBLE)时,ListView的第一行不工作。但是当我向下滚动向上滚动的时候,它会很好的工作

我的代码:

代码语言:javascript
复制
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;

    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-23 06:38:11

setVisibility(View.INVISIBLE)仍然无法工作。但是我只使用了一个ImageView,并在required.This为我工作时替换了这个图像。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28074617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档