Как сделать плавную загрузку в ListView (Android)

241
31 мая 2021, 19:00

У меня есть горизонтальный progressBar. И в начале загрузки в ListView я устанавливаю значение progressBar.setMax(3000); потому что не знаю сколько примерно элементов будет загружено в ListView а потом progress + 1; что бы пошла загрузка в progressBar а в конце ставлю progressBar.setProgress(3000); и таким образом заполняю то что не заполнилось. Получается примерно плавная загрузка.

Что я хочу чтобы можно ка-кто это сделать без установки progressBar.setMax(3000); и всех выше перечисленных манипуляций.

public class Main3Activity extends AppCompatActivity {
    private ArrayAdapter<String> adapter;
    private ListView lv;

    ProgressBar progressBar;
    private int progress = 0;

    public Elements content;
    public ArrayList<String> titleList = new ArrayList<String>();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
                setTheme(R.style.AppTheme);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);


            lv = (ListView) findViewById(R.id.view);
            new NewThread().execute();
                adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.pro_item, titleList);
            progressBar = (ProgressBar) findViewById(R.id.progressBar);
            progressBar.setMax(3000);
        progressBar.setVisibility(View.VISIBLE);
        }

    public class NewThread extends AsyncTask<String, Integer, String> {
        @Override
        protected String doInBackground(String... arg) {
            Document doc;
            try {
                doc = Jsoup.connect("https://").maxBodySize(0).get();
                content = doc.select("tr");
                titleList.clear();
                for (Element contents : content) {
                    titleList.add(contents.text());
                    publishProgress(progress);
                }

            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
        @Override
        protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values);
            progressBar = (ProgressBar) findViewById(R.id.progressBar);
            progress = progress + 1;
            progressBar.setProgress(values[0]);
        }
        @Override
        protected void onPostExecute(String result) {
            progressBar.setProgress(3000);
            lv.setAdapter(adapter);
           // progressBar.setVisibility(View.GONE);

}}}
READ ALSO
Помогите с реализацией

Помогите с реализацией

Я учусь работать на движке libgdx (и box2d соответственно) и хочу реализовать следующееУ меня есть персонаж, и я хочу, чтобы при его движении за ним...

119
Как заставить бота телеграм удалять свои же сообщения?

Как заставить бота телеграм удалять свои же сообщения?

Хочу, чтобы бот (TelegramLongPollingBot) периодически писал в беседу, что он онлайн и при этом удалял прошлое такое свое оповещениеКод для удаления старого...

166
не работают кнопки на java для андроид приложения

не работают кнопки на java для андроид приложения

не могу понять почему не работает, делаю приложение на андроид 44 в java, три кнопки и текст на экране, каждая кнопка меняет текст, но почему то не работает,...

191
UDP или Websocket

UDP или Websocket

Хочу организовать программу в которой ~1-3 секунды пользователь отсылает запрос на сервер который должен обработать быстро информацию и отправить...

87