Как скрыть счетчик (индикатор выполнения) после завершения загрузки? - PullRequest
0 голосов
/ 07 июня 2019

Я работаю над приложением, которое загружает файлы, у меня есть recyclerview -> cardview (10-20 позиций), если вы нажмете одну из них начинается процесс загрузки файла, и в то же время я добавляю спиннер, чтобы пользователь знал, что загрузка идет но у меня проблема с отменой счетчика после завершения загрузки, потому что я не знаю, как ссылаться на конкретное представление карты в обзоре утилизатора, мне нужно передать позицию вида карты, идентификатор счетчика (индикатора выполнения)?

любая помощь будет оценена, спасибо!

из моего класса адаптера

@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) {

}

Ответы [ 2 ]

1 голос
/ 07 июня 2019
    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); 
    }
                }
0 голосов
/ 08 июня 2019

Если вы загружаете файл с сервера, вам следует использовать 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
        }

    }
...