Advertisement
Guest User

Untitled

a guest
Aug 30th, 2015
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.38 KB | None | 0 0
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent">
  6. <Button android:id="@+id/parse"
  7. android:layout_height="wrap_content"
  8. android:layout_width="fill_parent"
  9. android:text="Получить данные">
  10. </Button>
  11. <ListView android:id="@+id/listViewData"
  12. android:layout_height="wrap_content"
  13. android:layout_width="match_parent">
  14. </ListView>
  15. </LinearLayout>
  16.  
  17. public void onCreate(Bundle savedInstanceState) {
  18. super.onCreate(savedInstanceState);
  19. setContentView(R.layout.index);
  20.  
  21. //Находим кнопку
  22. Button button = (Button)findViewById(R.id.parse);
  23. //Регистрируем onClick слушателя
  24. button.setOnClickListener(myListener);
  25. }
  26.  
  27. //Диалог ожидания
  28. private ProgressDialog pd;
  29. //Слушатель OnClickListener для нашей кнопки
  30. private OnClickListener myListener = new OnClickListener() {
  31. public void onClick(View v) {
  32. //Показываем диалог ожидания
  33. pd = ProgressDialog.show(IndexActivity.this, "Working...", "request to server", true, false);
  34. //Запускаем парсинг
  35. new ParseSite().execute("http://www.stackoverflow.com");
  36. }
  37. };
  38.  
  39. private class ParseSite extends AsyncTask<String, Void, List<String>> {
  40. //Фоновая операция
  41. protected List<String> doInBackground(String... arg) {
  42. List<String> output = new ArrayList<String>();
  43. try
  44. {
  45. HtmlHelper hh = new HtmlHelper(new URL(arg[0]));
  46. List<TagNode> links = hh.getLinksByClass("question-hyperlink");
  47.  
  48. for (Iterator<TagNode> iterator = links.iterator(); iterator.hasNext();)
  49. {
  50. TagNode divElement = (TagNode) iterator.next();
  51. output.add(divElement.getText().toString());
  52. }
  53. }
  54. catch(Exception e)
  55. {
  56. e.printStackTrace();
  57. }
  58. return output;
  59. }
  60.  
  61. //Событие по окончанию парсинга
  62. protected void onPostExecute(List<String> output) {
  63. //Убираем диалог загрузки
  64. pd.dismiss();
  65. //Находим ListView
  66. ListView listview = (ListView) findViewById(R.id.listViewData);
  67. //Загружаем в него результат работы doInBackground
  68. listview.setAdapter(new ArrayAdapter<String>(IndexActivity.this,
  69. android.R.layout.simple_list_item_1 , output));
  70. }
  71. }
  72. }
  73.  
  74. public HtmlHelper(URL htmlPage) throws IOException {
  75. //Создаём объект HtmlCleaner
  76. HtmlCleaner cleaner = new HtmlCleaner();
  77. //Загружаем html код сайта
  78. rootNode = cleaner.clean(htmlPage);
  79. }
  80.  
  81. List<TagNode> getLinksByClass(String CSSClassname)
  82. {
  83. List<TagNode> linkList = new ArrayList<TagNode>();
  84.  
  85. //Выбираем все ссылки
  86. TagNode linkElements[] = rootNode.getElementsByName("a", true);
  87. for (int i = 0; linkElements != null && i < linkElements.length; i++)
  88. {
  89. //получаем атрибут по имени
  90. String classType = linkElements[i].getAttributeByName("class");
  91. //если атрибут есть и он эквивалентен искомому, то добавляем в список
  92. if (classType != null && classType.equals(CSSClassname))
  93. {
  94. linkList.add(linkElements[i]);
  95. }
  96. }
  97.  
  98. return linkList;
  99. }
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement