2015-02-26 3 views
0

Я использовал PagerSlidingTabStrip и должен быть фрагментами.Получить представление из фрагмента используя AsyncTask

В каждом фрагменте я использовал AsyncTask для получения данных с сервера.

Ниже представлен мой класс фрагментов, который получает html с сервера и отображает listview.

public class MainFragmentSubList extends Fragment { 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_main_list, container, false); 
    ListView mainList = (ListView) view.findViewById(R.id.fragment_list); 

    ArrayList<String> infoList; 

    // this is AsyncTask class and i made an interface. 
    new GetHtml(new OnRequestFinish(){ 
     @Override 
     void onFinish(){ 
      // Below are about ui 
      ArrayList<String> titleList = (ArrayList<String>) User.subName.clone(); 
      int size = infoList.size(); 
      MainListAdapter adapter = new MainListAdapter(titleList, infoList, size + 1); 
      mainList.setAdapter(adapter); 
     } 
    }).execute(); 

    return view; 
} 

Поскольку AsyncTask делает вещи в фоновом режиме, return view; не работает, как я ожидал.

Вот моя основная деятельность, в которой есть фрагменты.

public class MainActivity extends ActionBarActivity { 
private Context context; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    pager = (ViewPager) findViewById(R.id.pager); 
    pager.setAdapter(new MyPagerAdapter(getSupportFragmentManager())); 
    PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs); 

    tabs.setShouldExpand(true); 
    tabs.setViewPager(pager); 
} 
} 

Как я могу вернуть вид из фрагмента с помощью AsyncTask?

+0

Зачем нужно возвращать 'View' из AsyncTask? –

+0

Я хочу вернуть 'view' в класс фрагмента. Я просто использовал AsyncTask, потому что мне нужно получить файлы с сервера. – soonoo

+0

Есть ошибки? Или какой результат вы пытаетесь достичь? – Droidekas

ответ

0

Вперед и настройте свой вид в onCreateView. Инициализируйте и установите свой адаптер тоже с пустым списком. Для удобства вы делаете адаптер и переменные вашего списка.

Убедитесь, что onFinish вызван onPostExecute AsyncTask, так что он работает по правильной теме. Когда он вызывается, вы обновляете свой список, а затем вызываете метод адаптера notifyDataSetChanged().

Смежные вопросы