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

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

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

Android Json Load More - Программирование Android

12.12.2013, 17:46. Просмотров 708. Ответов 5
Метки нет (Все метки)

Здравствуйте, я работал JSON. У меня есть два класса (private class LoadDataToServer extends AsyncTask и class loadMoreListView extends AsyncTask)
в первом классе я анализируется JSON и шоу пункт в ListView и второго класса я пытаюсь загрузить несколько элементов.
моя проблема, когда я называю new loadMoreListView().execute();.. по методу кнопку ClickListener это работает, но когда я вызвать метод listView.setOnScrollListener есть ошибка
это мой код:

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
76
77
78
79
80
81
82
83
84
85
86
87
private class loadMoreListView extends
            AsyncTask<Void, Integer, ArrayList<HashMap<String, String>>> {
 
        @Override
        protected void onPreExecute() {
            pd.show();
        }
 
        @Override
        protected ArrayList<HashMap<String, String>> doInBackground(
                Void... params) {
 
            jsonparser = new JSONParser();
 
            URL = "http://bri.ge/api/getList.aspx?count=20&time=" + dateTime;
            jsonarray = new JSONArray();
 
            JSONObject jsonobject = jsonparser.getJSONfromURL(URL);
 
            try {
 
                jsonarray = jsonobject.getJSONArray("data");
 
                for (int i = 0; i < jsonarray.length(); i++) {
 
                    jsonobject = jsonarray.getJSONObject(i);
 
                    HashMap<String, String> map = new HashMap<String, String>();
 
                    map.put("journal", jsonobject.getString(KEY_journal));
                    map.put("image", jsonobject.getString(KEY_image));
                    map.put("title", jsonobject.getString(KEY_title));
                    map.put("description",
                            jsonobject.getString(KEY_description));
                    map.put("JournalID", KEY_JournalID);
 
                    map.put("pubDate", jsonobject.getString(KEY_pubDate));
 
                    Content cont = new Content(jsonobject.getString("journal"),
                            jsonobject.getString("image"),
                            jsonobject.getString("title"),
                            jsonobject.getString("pubDate"),
                            jsonobject.getString("description"),
                            jsonobject.getInt("JournalID"));
 
                    contents.add(cont);
 
                    itemList.add(map);
 
                }
                // adapter.notifyDataSetChanged();
            } catch (JSONException e) {
                Log.e("Error", e.getMessage());
                e.printStackTrace();
 
            }
            dateTime = itemList.get(itemList.size() - 1).get(KEY_pubDate);
            return itemList;
        }
 
        @Override
        protected void onPostExecute(ArrayList<HashMap<String, String>> result) {
            super.onPostExecute(result);
            if (pd.isShowing()) {
                pd.dismiss();
                try {
                    // itemList.clear();
                    // adapter.notifyDataSetChanged();
                    int currentPosition = list.getFirstVisiblePosition();
 
                    // Appending new data to menuItems ArrayList
 
                    adapter = new LazyAdapter(MainActivity.this, itemList);
 
                    list.setAdapter(adapter);
                    // list.add
 
                    // Setting new scroll position
                    list.setSelectionFromTop(currentPosition + 1, 0);
 
                } catch (NullPointerException e) {
                    e.printStackTrace();
                }
 
            }
        }
    }
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
private class LoadDataToServer extends
            AsyncTask<Void, Integer, ArrayList<HashMap<String, String>>> {
 
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pd.show();
 
        }
 
        @Override
        protected ArrayList<HashMap<String, String>> doInBackground(
                Void... params) {
 
            jsonparser = new JSONParser();
 
            @SuppressWarnings("static-access")
            JSONObject jsonobject = jsonparser.getJSONfromURL(URL);
            try {
 
                jsonarray = jsonobject.getJSONArray("data");
 
                for (int i = 0; i < jsonarray.length(); i++) {
 
                    jsonobject = jsonarray.getJSONObject(i);
 
                    HashMap<String, String> map = new HashMap<String, String>();
 
                    map.put("journal", jsonobject.getString(KEY_journal));
                    map.put("image", jsonobject.getString(KEY_image));
                    map.put("title", jsonobject.getString(KEY_title));
                    map.put("description",
                            jsonobject.getString(KEY_description));
                    map.put("JournalID", KEY_JournalID);
                    map.put("pubDate", jsonobject.getString(KEY_pubDate));
 
                    // contents = new ArrayList<Content>();
 
                    Content cont = new Content(jsonobject.getString("journal"),
                            jsonobject.getString("image"),
                            jsonobject.getString("title"),
                            jsonobject.getString("pubDate"),
                            jsonobject.getString("description"),
                            jsonobject.getInt("JournalID"));
 
                    contents.add(cont);
 
                    itemList.add(map);
                }
            } catch (JSONException e) {
                Log.e("Error", e.getMessage());
                e.printStackTrace();
            }
            dateTime = itemList.get(itemList.size() - 1).get(KEY_pubDate);
            return itemList;
 
        }
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    listView.setOnScrollListener(new OnScrollListener() {
 
            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
                if (scrollState == 0) {
                    // new loadMoreListView().execute();
 
                }
 
            }
 
            @Override
            public void onScroll(AbsListView view, int firstVisibleItem,
                    int visibleItemCount, int totalItemCount) {
                final int lastItem = firstVisibleItem + visibleItemCount;
                if (lastItem == totalItemCount) {
                    new loadMoreListView().execute();
                } else {
 
                }
 
            }
        });
http://b.pix.ge/z/toct2.jpg
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2013, 17:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Android Json Load More (Программирование Android):

Android studio failed to load a virtual device. как запустить вирт.устр-во? - Программирование Android
android studio failed to load a virtual device. как запустить вирт.устр-во?

Android JSON - Программирование Android
Народ можете скинуть статеек или пару примеров написать как принимать. Настроил сервер на элементарный ответ А вот теперь хочу что бы...

Android Parse Json - Программирование Android
Здравствуйте, я хочу, чтобы разобрать JSON * мой JSON является: { message: &quot;Magazines&quot;, magazines: , thumbnail:...

Json android изображение - Программирование Android
Нужна помощь, нужно парсить фотки с открытой группы вконтакте, в переложение

Android json, передача переменной - Программирование Android
Здравствуйте. В android приложение формирую json файл, как его в php разобрать? Что я делаю не так? public void onClick(View v) { ...

MySQL через JSON в Android Studio - Программирование Android
Всем категорический привет! Осваивала коннект MySQL с AS через урок: http://devcolibri.com/1548#comment-6659 Вывод перечня продуктов из...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
dajver
408 / 272 / 18
Регистрация: 18.09.2010
Сообщений: 1,108
12.12.2013, 21:59 #2
Так вам написало в чем ошибка, читайте логи внимательней, у вас идет изменение адаптера из соседнего потока, вам нада это исправить.
Миниатюры
Android Json Load More  
xonski
1 / 1 / 0
Регистрация: 24.07.2013
Сообщений: 35
13.12.2013, 12:50  [ТС] #3
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
listView.setOnScrollListener(new OnScrollListener() {
 
            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
                if (scrollState == 0) {
                    // new loadMoreListView().execute();
 
                }
 
            }
 
            @Override
            public void onScroll(AbsListView view, int firstVisibleItem,
                    int visibleItemCount, int totalItemCount) {
                final int lastItem = firstVisibleItem + visibleItemCount;
                if (lastItem == totalItemCount) {
                    new loadMoreListView().execute();
                } else {
 
                }
 
            }
        });
Как я могу решить эту проблему? meybe моя проблема метод listview.setonscrolllistener
dajver
408 / 272 / 18
Регистрация: 18.09.2010
Сообщений: 1,108
13.12.2013, 16:57 #4
Цитата Сообщение от xonski Посмотреть сообщение
Как я могу решить эту проблему? meybe моя проблема метод listview.setonscrolllistener
Возможно ошибка и в нем, попробуйте execute вынести за пределы этой функции и проверьте как оно будет работать.
xonski
1 / 1 / 0
Регистрация: 24.07.2013
Сообщений: 35
13.12.2013, 20:04  [ТС] #5
Большое спасибо за ваше внимание, к сожалению, я не понимаю ваши слова., Вы можете указано, что я должен изменить? (В частности мой исходный код)
dajver
408 / 272 / 18
Регистрация: 18.09.2010
Сообщений: 1,108
14.12.2013, 01:27 #6
Цитата Сообщение от xonski Посмотреть сообщение
Большое спасибо за ваше внимание, к сожалению, я не понимаю ваши слова., Вы можете указано, что я должен изменить? (В частности мой исходный код)
maybe if I will try to talk to you in English you will understand what a told? I told that u should write execute method outside of the onScroll and onClick methods, write this method in onCreate method and then u will see that program worked or not, if u will catch error it mean that u have mistakes in your doInBackground method, if u won't get errors that means program should be working.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2013, 01:27
Привет! Вот еще темы с ответами:

Как встретить JSON из Android на сервере с PHP? - Программирование Android
Привет, форумчане! Не могу понять как организовать встречу JSON на серваке с php, который приходит от Android приложения. Вот реализация...

Как распарсить Json-ответ Android приложении? - Программирование Android
Добрый день! Android приложение получает ответ от сервера в формате Json. Есть 2 варианта ответа : 1. 2. Какой лучше...

Ошибка - Errororg.json.JSONExceprion: Value bd.json of type java.lang.String cannot be converted to JSONObject - Программирование Android
Здравствуйте! Есть база данных bd.json, которая находится в проекте в папке assets. Вот содержимое базы данных; { &quot;name&quot;:...

Откуда берутся атрибуты android:layout_width и android:layout_height в элементе LinearLayout? - Программирование Android
Недавно начал изучать Android API, а сегодня более менее разобрал основы синтакиса XML. Затем стал разбирать следующий пример: ...


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

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

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