Я делаю приложение, которое получает весь код html с сайта, тогда данные извлекаются в соответствии с моими требованиями. Мне нужен диалог прогресса, когда он работает в фоновом режиме, чтобы получить данные и после отображения данных в окне просмотра списка должно быть отклонено. Я искал много вопросов и руководств по Google. Проблема в том, что я не могу использовать функцию get здесь из-за этого мой диалог не отображается. Поэтому после этого я искал google другой метод, который говорит, что я должен использовать методы обратного вызова. Но я хочу данные из метода doInBackground. Как я могу получить данные, если я не буду использовать метод get.AsyncTask get function not show Progressbar
Вот мой код:
public class MainActivity extends AppCompatActivity {
ListView listView;
ArrayList<String> myArray;
ArrayList<Integer> myImageArray;
ProgressDialog progress;
String getData;
public class DownloadTask extends AsyncTask<String,Void,String>{
@Override
protected void onPreExecute() {
super.onPreExecute();
progress.setMessage("Downloading Music :) ");
progress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progress.setIndeterminate(true);
progress.show();
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
progress.dismiss();
}
@Override
protected String doInBackground(String... params) {
try{
String result= "";
URL url = new URL(params[0]);
HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();
InputStream inputStream = urlConnection.getInputStream();
InputStreamReader reader = new InputStreamReader(inputStream);
int data = reader.read();
while (data!=-1){
char current = (char)data;
result += current;
data = reader.read();
}
getData = result;
return result;
}catch (Exception e){
e.printStackTrace();
return "Failed!";
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String total= "";
String newTotal = "";
listView = (ListView)findViewById(R.id.listView);
myArray = new ArrayList<String>();
myImageArray = new ArrayList<Integer>();
progress = new ProgressDialog(this);
DownloadTask task = new DownloadTask();
try {
String text = task.execute("https://www.earticleblog.com/").get();
Pattern p = Pattern.compile("<div class=\"td-module-thumb\">(.*?)</div>");
Matcher m = p.matcher(text);
while(m.find()){
total += m.group(1);
}
p = Pattern.compile("a href=\"(.*?)\">");
m = p.matcher(total);
while (m.find()){
newTotal += m.group(1);
}
p = Pattern.compile("title=\"(.*?)http");
m = p.matcher(newTotal);
while (m.find()){
myArray.add(m.group(1));
myImageArray.add(R.drawable.tryit);
}
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
ArrayAdapter adapter = new CustomAdapter(this,myImageArray,myArray);
listView.setAdapter(adapter);
}
}
Применить решение, а затем проверить – Vickyexpert
Вы получили решение или нет? – Vickyexpert