【问题标题】:How to hide spinner(progress bar) after download complete?下载完成后如何隐藏微调器(进度条)?
【发布时间】:2019-06-07 17:05:32
【问题描述】:

我正在开发一个下载文件的应用程序,我有 recyclerview -> cardview(10-20 个项目),如果你点击其中一个项目 下载文件的过程开始,同时我添加了一个微调器,让用户知道下载正在进行中 但是下载完成后我在取消微调器时遇到问题,因为我不知道如何引用特定的卡片视图 在recyclerview上,我需要传递卡片视图的位置,spinner(progressbar) id吗?

任何帮助将不胜感激,谢谢!

来自我的适配器类

@Override
public void onBindViewHolder(@NonNull final FirstLevelViewHolder holder, final int position) {
        ItemsLevel2 currentItem = fItems.get(position);

        final String id             = currentItem.getId();
        final String name           = currentItem.getName(); 

        holder.id.setText(id);
        holder.ame.setText(name);   

        holder.fImageButton .setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) { 
                holder.img.setVisibility(View.INVISIBLE);
                holder.spinner.setVisibility(View.VISIBLE); 
                downloadFile(name);
            }
        });
    }

这里有所有代码供下载

downloadFile(String name) {

}

【问题讨论】:

  • 你能告诉我们你的下载文件代码吗?

标签: java android android-recyclerview download android-cardview


【解决方案1】:
    int downloadFile(String name) {
     if (finish) return 1;
    }

    ////////////////////////////////////////
public void onClick(View v) { 
                    holder.spinner.setVisibility(View.VISIBLE); 
                   if( downloadFile(name))==1{
     holder.spinner.setVisibility(!View.VISIBLE); 
    }
                }

【讨论】:

  • 添加一点解释而不是仅仅添加代码。现在连我都看不懂你写了什么。
  • 我不确定:此代码检查下载是否完成点击,因此每当用户再次点击按钮时。相反,应该有一个 active 通知下载已完成,因此 UI 可以立即处理。
【解决方案2】:

如果你是从服务器下载文件,那么你应该使用 AsyncTask 并在doInBackground() 方法中下载你的文件,在onPreExecute() 中显示你的进度条并在onPostExecute() 中关闭微调器。

 public class DownloadFileAsyncTask extends AsyncTask<String,String,String>{

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            //show Progressbar
        }

        @Override
        protected String doInBackground(String... strings) {
            //downloadFile()
            return null;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            //close spinner
        }

    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多