Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <Button android:id="@+id/parse"
- android:layout_height="wrap_content"
- android:layout_width="fill_parent"
- android:text="Получить данные">
- </Button>
- <ListView android:id="@+id/listViewData"
- android:layout_height="wrap_content"
- android:layout_width="match_parent">
- </ListView>
- </LinearLayout>
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.index);
- //Находим кнопку
- Button button = (Button)findViewById(R.id.parse);
- //Регистрируем onClick слушателя
- button.setOnClickListener(myListener);
- }
- //Диалог ожидания
- private ProgressDialog pd;
- //Слушатель OnClickListener для нашей кнопки
- private OnClickListener myListener = new OnClickListener() {
- public void onClick(View v) {
- //Показываем диалог ожидания
- pd = ProgressDialog.show(IndexActivity.this, "Working...", "request to server", true, false);
- //Запускаем парсинг
- new ParseSite().execute("http://www.stackoverflow.com");
- }
- };
- private class ParseSite extends AsyncTask<String, Void, List<String>> {
- //Фоновая операция
- protected List<String> doInBackground(String... arg) {
- List<String> output = new ArrayList<String>();
- try
- {
- HtmlHelper hh = new HtmlHelper(new URL(arg[0]));
- List<TagNode> links = hh.getLinksByClass("question-hyperlink");
- for (Iterator<TagNode> iterator = links.iterator(); iterator.hasNext();)
- {
- TagNode divElement = (TagNode) iterator.next();
- output.add(divElement.getText().toString());
- }
- }
- catch(Exception e)
- {
- e.printStackTrace();
- }
- return output;
- }
- //Событие по окончанию парсинга
- protected void onPostExecute(List<String> output) {
- //Убираем диалог загрузки
- pd.dismiss();
- //Находим ListView
- ListView listview = (ListView) findViewById(R.id.listViewData);
- //Загружаем в него результат работы doInBackground
- listview.setAdapter(new ArrayAdapter<String>(IndexActivity.this,
- android.R.layout.simple_list_item_1 , output));
- }
- }
- }
- public HtmlHelper(URL htmlPage) throws IOException {
- //Создаём объект HtmlCleaner
- HtmlCleaner cleaner = new HtmlCleaner();
- //Загружаем html код сайта
- rootNode = cleaner.clean(htmlPage);
- }
- List<TagNode> getLinksByClass(String CSSClassname)
- {
- List<TagNode> linkList = new ArrayList<TagNode>();
- //Выбираем все ссылки
- TagNode linkElements[] = rootNode.getElementsByName("a", true);
- for (int i = 0; linkElements != null && i < linkElements.length; i++)
- {
- //получаем атрибут по имени
- String classType = linkElements[i].getAttributeByName("class");
- //если атрибут есть и он эквивалентен искомому, то добавляем в список
- if (classType != null && classType.equals(CSSClassname))
- {
- linkList.add(linkElements[i]);
- }
- }
- return linkList;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement