Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Xpert1993
0 / 0 / 1
Регистрация: 16.06.2012
Сообщений: 41
#1

Jsoup. Проблемы с выводом Elements - Программирование Android

01.05.2013, 19:51. Просмотров 1102. Ответов 8
Метки нет (Все метки)

Код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package com.example.projecta;
 
import java.io.IOException;
 
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
 
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
 
public class MainActivity extends Activity {
    MyTask mt;
    TextView tvInfo;
    ListView lv;
    private static final String TAG = "myLogs";
 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        tvInfo = (TextView) findViewById(R.id.tvInfo);
        lv = (ListView) findViewById(R.id.ListView1);
    }
 
    public void onclick(View v) {
        mt = new MyTask();
        mt.execute();
        Log.d(TAG, "0");
    }
 
    class MyTask extends AsyncTask<String, Void, String> {
 
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            tvInfo.setText("Begin");
        }
 
        protected String doInBackground(String... links) {
            Document doc = null;
            try {
                doc = Jsoup.connect("http://4pda.ru/forum/index.php?showtopic=216032&view=findpost&p=6425520").get();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            Elements els = doc.select("div[class=hidemain]>ol>li>a[target]");
            String[] arrayStr = new String[els.size()];
            for (int i = 0; i < arrayStr.length; i++) {
                arrayStr[i] = els.get(i).toString();
            }
            ArrayAdapter<String> aa = new ArrayAdapter<String>(
                    getApplicationContext(),
                    android.R.layout.simple_list_item_1, arrayStr);
            return aa;
        }
 
        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            lv.setAdapter(result);
            Toast toast = Toast.makeText(getApplicationContext(), "Завершено",
            Toast.LENGTH_LONG);
            toast.show();
        }
 
    }
}
Проблема в неправильном задании типов функций.
По хорошему:
Java
1
protected Elements doInBackground(String... links) {
Но так надо менять переменные класса MyTask, а это уже не то... В планах сделать прокручиваемый список из элементов Elements.
Ошибки:
Кликните здесь для просмотра всего текста
The method setAdapter(ListAdapter) in the type ListView is not applicable for the arguments (String) line 68
Type mismatch: cannot convert from ArrayAdapter<String> to String line 62
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2013, 19:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Jsoup. Проблемы с выводом Elements (Программирование Android):

Вывод Elements в списке. Jsoup - Программирование Android
Здравствуйте! Я только начал изучать программирование под Android. Пробовал выводить список, по одному из уроков, и тем на этом сайте....

Создание Resourcer Elements - Программирование Android
Здравствуйте. Подскажите пожалуйста , как правильно создать ресурс в папке &quot;values&quot; в файле strings.xml ? И что значит обведенное поле на...

jsoup - Программирование Android
Здрасьте. Вопрос по поводу этой замечательной библиотеке:) Есть html следующего содержания: &lt;span class=&quot;aaa&quot;&gt;Всем привет!&lt;br /&gt; ...

Jsoup - Программирование Android
Помогите пожалуйста. При нажатии на строку с заголовком приложение вылетает. Подскажите в чем дело и как потом это исправить. public...

AsyncTask и Jsoup - Программирование Android
Не работает вот такой код: package com.example.projecta; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import...

JSOUP парсинг - Программирование Android
Код парсит в textView1 с сайта class=&quot;30&quot; Как переписать/дописать код, чтоб он парсил еще и в textView2 класс=&quot;31&quot; Классы 30, 31 на...

8
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
01.05.2013, 19:57 #2
Цитата Сообщение от Xpert1993 Посмотреть сообщение
Проблема в неправильном задании типов функций.
задайте правильно.
0
Xpert1993
0 / 0 / 1
Регистрация: 16.06.2012
Сообщений: 41
01.05.2013, 20:03  [ТС] #3
Я же говорю- пробую так:
Java
1
protected Elements doInBackground(String... links)
И соответственно меняю:
Java
1
class MyTask extends AsyncTask<Elements, Void, String>
Тогда на строке класса MyTask ошибка:
The type MainActivity.MyTask must implement the inherited abstract method AsyncTask<Elements,Void,String>.doInBackground(Elements...).
А написал так много с целью, что может предложат более оптимальный выход из ситуации...
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
01.05.2013, 20:38 #4
Нужно в такой последовательности
Java
1
class MyTask extends AsyncTask<String, Void, Elements>
и вы возвращаете не Elements, а ArrayAdapter<String>
0
Xpert1993
0 / 0 / 1
Регистрация: 16.06.2012
Сообщений: 41
01.05.2013, 21:58  [ТС] #5
А если такое попробовать:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package com.example.projecta;
 
import java.io.IOException;
 
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
 
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
 
public class MainActivity extends Activity {
    MyTask mt;
    TextView tvInfo;
    ListView lv;
    private static final String TAG = "myLogs";
 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        tvInfo = (TextView) findViewById(R.id.tvInfo);
        lv = (ListView) findViewById(R.id.ListView1);
    }
 
    public void onclick(View v) {
        mt = new MyTask();
        mt.execute();
        Log.d(TAG, "0");
    }
 
    class MyTask extends AsyncTask<String, Void, Elements> {
 
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            tvInfo.setText("Begin");
        }
 
        protected Elements doInBackground(String... links) {
            Document doc = null;
            try {
                doc = Jsoup.connect("http://4pda.ru/forum/index.php?showtopic=216032&view=findpost&p=6425520").get();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            Elements els = doc.select("div[class=hidemain]>ol>li>a[target]");
            
            return els;
        }
 
        protected void onPostExecute(Elements result) {
            super.onPostExecute(result);
            String[] arrayStr = new String[result.size()];
            for (int i = 0; i < arrayStr.length; i++) {
                arrayStr[i] = (result).get(i).toString();
            }
            ArrayAdapter<String> aa = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1, arrayStr);
            lv.setAdapter(result);
            Toast toast = Toast.makeText(getApplicationContext(), "Завершено",
            Toast.LENGTH_LONG);
            toast.show();
        }
 
    }
}
Т.е. выводить из doInBackground Elements и в onPostExecute выводить на экран. Только тогда ошибка
The method setAdapter(ListAdapter) in the type ListView is not applicable for the arguments (Elements) line 69
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
01.05.2013, 22:10 #6
а почему вы пытаетесь убедить ListView что Elements это адаптер?
0
Xpert1993
0 / 0 / 1
Регистрация: 16.06.2012
Сообщений: 41
02.05.2013, 19:30  [ТС] #7
Ну а как лучше выводить Elements в список?
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
02.05.2013, 20:07 #8
просто замените
Java
1
lv.setAdapter(result);
на
Java
1
lv.setAdapter(aa);
1
Xpert1993
0 / 0 / 1
Регистрация: 16.06.2012
Сообщений: 41
02.05.2013, 20:11  [ТС] #9
Да, уже хотел написать что нашел ошибку. Спасибо!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2013, 20:11
Привет! Вот еще темы с ответами:

Jsoup парс - Программирование Android
Здравствуйте такой вопрос есть сайт который в наличие есть скрипт ... &lt;td class=&quot;time&quot;&gt; &lt;span...

Jsoup и https - Программирование Android
Здравствуйте есть вопрос. Есть сайт на https на котором нужно залогиниться чтобы получить инфу. вопрос в том как с этим работать с...

Parsing with Jsoup - Программирование Android
Итак, пробую написать очень простое тестовое приложение, для чтения html-файлов. Вот файл JsoupDemoActivity.java: package...

Парсинг на jsoup - Программирование Android
Добрый всем день! Заминка такая, уже весь гугл перелопатил, синих ссылок в браузере не осталось. Есть пример парсинга сайта: import...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
02.05.2013, 20:11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru