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

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

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

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

01.05.2013, 19:51. Просмотров 1029. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2013, 19:51     Jsoup. Проблемы с выводом Elements
Посмотрите здесь:
Вывод Elements в списке. Jsoup Android
Создание Resourcer Elements Android
jsoup Android
Android Jsoup
Android WebView + JSOUP
Jsoup парс Android
Jsoup и https Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
01.05.2013, 19:57     Jsoup. Проблемы с выводом Elements #2
Цитата Сообщение от Xpert1993 Посмотреть сообщение
Проблема в неправильном задании типов функций.
задайте правильно.
Xpert1993
0 / 0 / 1
Регистрация: 16.06.2012
Сообщений: 41
01.05.2013, 20:03  [ТС]     Jsoup. Проблемы с выводом Elements #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...).
А написал так много с целью, что может предложат более оптимальный выход из ситуации...
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
01.05.2013, 20:38     Jsoup. Проблемы с выводом Elements #4
Нужно в такой последовательности
Java
1
class MyTask extends AsyncTask<String, Void, Elements>
и вы возвращаете не Elements, а ArrayAdapter<String>
Xpert1993
0 / 0 / 1
Регистрация: 16.06.2012
Сообщений: 41
01.05.2013, 21:58  [ТС]     Jsoup. Проблемы с выводом Elements #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
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
01.05.2013, 22:10     Jsoup. Проблемы с выводом Elements #6
а почему вы пытаетесь убедить ListView что Elements это адаптер?
Xpert1993
0 / 0 / 1
Регистрация: 16.06.2012
Сообщений: 41
02.05.2013, 19:30  [ТС]     Jsoup. Проблемы с выводом Elements #7
Ну а как лучше выводить Elements в список?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
02.05.2013, 20:07     Jsoup. Проблемы с выводом Elements #8
просто замените
Java
1
lv.setAdapter(result);
на
Java
1
lv.setAdapter(aa);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2013, 20:11     Jsoup. Проблемы с выводом Elements
Еще ссылки по теме:
JSOUP парсинг Android
Парсинг на jsoup Android
Android Parsing with Jsoup
Android AsyncTask и Jsoup
Jsoup парсинг сайта Android

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

Или воспользуйтесь поиском по форуму:
Xpert1993
0 / 0 / 1
Регистрация: 16.06.2012
Сообщений: 41
02.05.2013, 20:11  [ТС]     Jsoup. Проблемы с выводом Elements #9
Да, уже хотел написать что нашел ошибку. Спасибо!
Yandex
Объявления
02.05.2013, 20:11     Jsoup. Проблемы с выводом Elements
Ответ Создать тему
Опции темы

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