Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
EgorDybovik
0 / 0 / 0
Регистрация: 24.02.2013
Сообщений: 128
1

AsyncTask в Fragment и viewPager

04.11.2015, 16:04. Просмотров 569. Ответов 1
Метки нет (Все метки)

У меня есть ViewPager который состоит из двух листающихся экранов,
есть код фрагмента который запускается в этом viewPager (как правильно сказать я не знаю). В разметке этого фрагмента есть ListView. В этот ListView должна появлятся информация загруженная из интернета с помощью AsyncTask . Но информация эта не появляется в ListView и как я понял потому что в методе onCreateView View элемент выводится раньше чем загружаются данные и потом уже они не меняются .. Как можно это исправить ? ..
Код фрагмента
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
package com.wall_call.wallpaperset.fragments;
 
/**
 * Created by Egor on 03.11.2015.
 */
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
 
import android.app.Activity;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.TextView;
 
import com.wall_call.wallpaperset.Constat;
import com.wall_call.wallpaperset.Mapers.AutoMaper;
import com.wall_call.wallpaperset.R;
import com.wall_call.wallpaperset.adapters.EventListAdapter;
import com.wall_call.wallpaperset.helper.Requester;
import com.wall_call.wallpaperset.models.ListEventModel;
 
public class PageFragment extends Fragment {
 
    static final String ARGUMENT_PAGE_NUMBER = "arg_page_number";
    List<ListEventModel> itemsEvents;
    EventListAdapter eventAdapte;
    int pageNumber;
    int backColor;
 
    public static PageFragment newInstance(int page) {
        PageFragment pageFragment = new PageFragment();
        Bundle arguments = new Bundle();
        arguments.putInt(ARGUMENT_PAGE_NUMBER, page);
        pageFragment.setArguments(arguments);
        return pageFragment;
    }
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        pageNumber = getArguments().getInt(ARGUMENT_PAGE_NUMBER);
        setRetainInstance(true);
        startAsyncTask();
    }
 
    private void startAsyncTask() {
        new ListEventsAsync(this).execute();
    }
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment1, null);
 
        TextView tvPage = (TextView) view.findViewById(R.id.textWithFragment);
        tvPage.setText("Старинчка " + pageNumber);
        //tvPage.setBackgroundColor(backColor);
 
       // ListView eventList = (ListView) view.findViewById(R.id.list_events);
 
       /* List<ListEventModel> newItemsEvent = new ArrayList<ListEventModel>();
        ListEventModel newModel = new ListEventModel();
        ListEventModel newModel2 = new ListEventModel();
        newModel.setFullName("Egor1");
        newModel2.setFullName("Egor2");
        newItemsEvent.add(newModel);
        newItemsEvent.add(newModel2);
        eventAdapte = new EventListAdapter(getActivity(),newItemsEvent);
        eventList.setAdapter(eventAdapte);*/
 
        //new ListEventsAsync(eventList).execute();
 
        return view;
    }
 
    public class ListEventsAsync extends AsyncTask<Void, Void, List<ListEventModel>> {
        ListView listViewEvent;
        PageFragment fragm;
        ListEventsAsync(PageFragment fr){
            //this.listViewEvent = eventList;
            this.fragm = fr;
        }
        @Override
        protected List<ListEventModel> doInBackground(Void... params) {
            /*sPref = getSharedPreferences("MyAouth",0);
            String userId = sPref.getString("userId", "");
            String userPass = sPref.getString("userPass", "");*/
 
 
            /*ChatService chatService = new ChatService();
            //List<ChatModel> chats = chatService.getAllChats(userId, userPass);
            chatDialogs = chatService.getAllChats(userId, userPass);*/
            Log.d("MYLOG", "start send POST");
            String resultPOST = Requester.sendPost(Constat.URL_MY_PAGE_SEND, "UserId=1"); // Добавить данных потом
            Log.d("MyLog",resultPOST);
            itemsEvents = AutoMaper.itemsEventMaper(resultPOST);
            Log.d("MYLOG", "END send POST");
 
            return itemsEvents;
        }
 
        @Override
        protected void onProgressUpdate(Void... values) {
            super.onProgressUpdate(values);
 
        }
 
        @Override
        protected void onPostExecute(final List<ListEventModel> result) {
            super.onPostExecute(result);
            eventAdapte = new EventListAdapter(getActivity(),result);
            Log.d("MYLOG", "set ADAPTER");
 
            fragm.setItemsListView(eventAdapte);
        }
    }
 
    private void setItemsListView(EventListAdapter adapterEvent){
        final Activity activity = getActivity();
        ListView listItemP =(ListView) activity.findViewById(R.id.list_events);
        listItemP.setAdapter(adapterEvent);
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2015, 16:04
Ответы с готовыми решениями:

ViewPager, Fragment и SimpleCursorAdapter, обновить соседнюю страницу
Есть активити с ViewPager, в который подгружается фрагмент, состоящий из...

Drawer Menu + ViewPager: Что лучше - Activity -> Fragments или Fragment -> Fragments
Я новичок в Android. Пишу приложение, в котором: Drawer Меню - в нем...

Обновление fragment из другого fragment
Добрый вечер всем!! Подскажите пожалуйста как обновить один фрагмент из другого...

AsyncTask
Здравствуйте, при использовании двух одинаковых методов получается разный...

AsyncTask
Привет. Знаю, что в AsyncTask doInBackground() обращатся к компонентам UI...

1
Никита Гриб
2 / 2 / 0
Регистрация: 10.08.2014
Сообщений: 36
05.11.2015, 13:03 2
Попробуй так. Смысл в том что ты вначале сетишь в адаптер пустой список . А когда подгрузишь данные обновляешь свой список. И выполняешь adapter.notifyDataSetChanged(). И adapter должен подтащить обновлённый лист и за сетить его в ListView.


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
List<ListEventModel> newItemsEvent 
EventListAdapter  eventAdapter;
 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment1, null);
        ListView eventList = (ListView) view.findViewById(R.id.list_events);
 
        newItemsEvent = new ArrayList<ListEventModel>();
        eventAdapter = new EventListAdapter(getActivity(),newItemsEvent);
        eventList.setAdapter(eventAdapte);
 
        new ListEventsAsync(eventList).execute();
 
        return view;
    }
 
 
  @Override
  protected void onPostExecute(final List<ListEventModel> result) {
            super.onPostExecute(result);
            setAdapter(result);
            Log.d("MYLOG", "set ADAPTER");
        }
 
 
   public void  setAdapter(List<ListEventModel> result){
 
        newItemsEvent =result;
        eventAdapter.notifyDataSetChanged();
   }
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2015, 13:03

AsyncTask
Использую AsyncTasc class MyT extends AsyncTask&lt;Void, Void, Void&gt; { ...

AsyncTask и get()
Создаю асинхронный процесс, где в onPreExecute() запускаю анимированный...

ViewPager
Всем. Да я недалекий и тупой, уже дня три не могу никак понять :wall: Есть...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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