首页 > 解决方案 > notifyDataSetChanged() 方法不起作用

问题描述

我创建了一个应用程序,其中我创建了一个自定义列表视图。当用户单击自定义列表视图中存在的下载按钮时,将下载文件然后我想禁用或隐藏该按钮,我可以隐藏该按钮,但是当用户按下并再次返回时,按钮隐藏但我想要什么时候用户单击下载按钮,应下载文件,然后立即隐藏该按钮。这是我的自定义列表适配器的代码

     @Override
              public View getView(final int position, View convertView,  
              ViewGroup parent) 
            {

        ViewHolder holder;
        if(convertView==null) {
            holder = new ViewHolder();
            convertView = inflater.inflate(R.layout.list_layout, null);
Typeface.createFromAsset(getContext().getAssets(),"DroidSans-Bold.ttf");
            holder.textViewName = convertView.findViewById(R.id.textViewName);
            holder.textViewurl = convertView.findViewById(R.id.textViewUrl);
           holder.download = convertView.findViewById(R.id.downloadimage);
            convertView.setTag(holder);
        }
        else
        {
            holder=(ViewHolder)convertView.getTag();
        }
      holder.textViewName.setText(pdfList.get(position).getName());
      holder.textViewurl.setText(pdfList.get(position).getUrl());
        File file = new File(Environment.getExternalStorageDirectory() + "/"
                + "android"+"/"+"data"+"/"+"foldername"+"/"+ pdfList.get(position).getName()+".pdf");
        if(file.exists())
        {
            holder.download.setVisibility(View.GONE);

        }
        else
        {
            holder.download.setVisibility(View.VISIBLE);
            holder.download.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    mOnItemClickListener.onItemClick(position);
                }
            });

        }
        notifyDataSetChanged();
        return convertView;

    }

标签: android

解决方案


您的 notifyDataSetChanged() 位置错误,请尝试在单击下载按钮时调用它。

 @Override
          public View getView(final int position, View convertView,  
          ViewGroup parent) 
        {

    ViewHolder holder;
    if(convertView==null) {
        holder = new ViewHolder();
        convertView = inflater.inflate(R.layout.list_layout, null);
        Typeface.createFromAsset(getContext().getAssets(),"DroidSans-Bold.ttf");
        holder.textViewName = convertView.findViewById(R.id.textViewName);
        holder.textViewurl = convertView.findViewById(R.id.textViewUrl);
       holder.download = convertView.findViewById(R.id.downloadimage);
        convertView.setTag(holder);
    }
    else
    {
        holder=(ViewHolder)convertView.getTag();
    }
  holder.textViewName.setText(pdfList.get(position).getName());
  holder.textViewurl.setText(pdfList.get(position).getUrl());
    File file = new File(Environment.getExternalStorageDirectory() + "/"
            + "android"+"/"+"data"+"/"+"foldername"+"/"+ pdfList.get(position).getName()+".pdf");
    if(file.exists())
    {
        holder.download.setVisibility(View.GONE);

    }
    else
    {
        holder.download.setVisibility(View.VISIBLE);
        holder.download.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mOnItemClickListener.onItemClick(position);
                notifyDataSetChanged();
            }
        });

    }
    return convertView;

}

推荐阅读