Раз и навсегда я хочу достичь этого.
У меня есть запрос строки, который выглядит так
StringRequest stringRequest = new StringRequest(Request.Method.POST, MASTER_LINK,
new Response.Listener<String>() {
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public void onResponse(String response) {
try {
JSONObject obj = new JSONObject(response);
JSONArray received_data = obj.getJSONArray("received");
if (received_data.length() == 0) {
/* TODO : Check what to do in this universe later */
} else {
}
} catch (JSONException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("email", current_email);
return params;
}
};
VolleySingleton.getInstance(this).addToRequestQueue(stringRequest);
}
То, что приведенный выше код будет делать, это создать запрос из php-файла, используя параметр email
Что дальше, так это то, что он создаст CSV-файл из SELECT
и после этого вернет
массив json с именем received
с данными done_cus
После этого, если значение было возвращено, он загрузит этот файл и этот код будет
if (done_process.toString().matches("done_cus")) {
FilePathname_CUS = sdCardDirectory + "/" + for_current_email + "_" + param_dim_customer + ".csv";
file_link = download_file + for_current_email + "_" + param_dim_customer + ".csv";
DownloadFilesname(FilePathname_CUS, file_link);
row_count = row_count + count_row(FilePathname_CUS);
count_customer = 1;
Log.e("Downloaded", "Customer List");
}
Пожалуйста, посмотрите на это count_row
, что он будет делать, чтобы посчитать, сколько строк в этом файле, так что давайте
скажем, у нас есть 1000 строк, так что, если у меня есть 5, то с каждой 1k строк, то 5k
это следующее, что я сделаю, я вставлю это в мой SQLLite
File file = new File(FilePathname_CUS);
CsvReader csvReader = new CsvReader();
try (CsvParser csvParser = csvReader.parse(file, StandardCharsets.UTF_8)) {
CsvRow row;
if (count_row(FilePathname_CUS) != 0) {
myDb.delete_customer(current_email);
while ((row = csvParser.nextRow()) != null) {
myDb.insert_customer(
row.getField(0),
row.getField(1),
row.getField(2),
row.getField(3),
row.getField(4),
row.getField(5),
row.getField(6),
row.getField(7),
row.getField(8),
row.getField(9),
row.getField(10)
);
Log.e("Inserting", "" + row.getField(0));
index++;
p = (float) index / (float) row_count;
p = p * (float) 100;
}
} else {
}
}
Обратите внимание на эту часть
index++;
p = (float) index / (float) row_count;
p = p * (float) 100;
это как процент, как этот 99%
теперь, после всех объяснений, вот мой вопрос.
Как мне индикатор выполнения с этим значением?
Вот мой индикатор
mProgressAnimation.setProgress("Value of the v")
;
потому что я вижу, что индикатор выполнения будет обновляться только после цикла. Как насчет цикла?
Вот весь код
StringRequest stringRequest = new StringRequest(Request.Method.POST, MASTER_LINK,
new Response.Listener<String>() {
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public void onResponse(String response) {
try {
JSONObject obj = new JSONObject(response);
JSONArray received_data = obj.getJSONArray("received");
if (received_data.length() == 0) {
/* TODO : Check what to do in this universe later */
} else {
if (done_process.toString().matches("done_cus")) {
FilePathname_CUS = sdCardDirectory + "/" + for_current_email + "_" + param_dim_customer + ".csv";
file_link = download_file + for_current_email + "_" + param_dim_customer + ".csv";
DownloadFilesname(FilePathname_CUS, file_link);
row_count = row_count + count_row(FilePathname_CUS);
count_customer = 1;
Log.e("Downloaded", "Customer List");
}
File file = new File(FilePathname_CUS);
CsvReader csvReader = new CsvReader();
try (CsvParser csvParser = csvReader.parse(file, StandardCharsets.UTF_8)) {
CsvRow row;
if (count_row(FilePathname_CUS) != 0) {
myDb.delete_customer(current_email);
while ((row = csvParser.nextRow()) != null) {
myDb.insert_customer(
row.getField(0),
row.getField(1),
row.getField(2),
row.getField(3),
row.getField(4),
row.getField(5),
row.getField(6),
row.getField(7),
row.getField(8),
row.getField(9),
row.getField(10)
);
Log.e("Inserting", "" + row.getField(0));
index++;
p = (float) index / (float) row_count;
p = p * (float) 100;
mProgressAnimation.setProgress(p); //this must be update the progress bar
}
} else {
}
}
}
} catch (JSONException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("email", current_email);
return params;
}
};
VolleySingleton.getInstance(this).addToRequestQueue(stringRequest);
}