1 package de.dhbwloe.campusapp.fragments;
4 import android.os.Bundle;
5 import android.support.design.widget.TabLayout;
6 import android.support.v4.app.Fragment;
7 import android.support.v4.app.FragmentManager;
8 import android.support.v4.app.FragmentPagerAdapter;
9 import android.support.v4.view.ViewPager;
10 import android.util.Log;
11 import android.view.LayoutInflater;
12 import android.view.View;
13 import android.view.ViewGroup;
14 import android.widget.AdapterView;
15 import android.widget.ListView;
17 import java.text.SimpleDateFormat;
18 import java.util.ArrayList;
19 import java.util.Date;
20 import java.util.List;
22 import de.dhbwloe.campusapp.CampusAppContext;
23 import de.dhbwloe.campusapp.CampusAppFragment;
24 import de.dhbwloe.campusapp.R;
25 import de.dhbwloe.campusapp.search.SearchIndices;
26 import de.dhbwloe.campusapp.search.SearchTarget;
29 * A simple {@link Fragment} subclass.
31 public class AppSearch extends CampusAppFragment {
32 private ViewPagerAdapter oAppSearchLViewPagerAdapter;
33 private String sSearchQuery;
36 public void onCreate(Bundle savedInstanceState) {
37 Log.i("AppSearch", "Event: onCreate");
38 super.onCreate(savedInstanceState);
41 if((bundle = getArguments()) != null)
42 sSearchQuery = bundle.getString("query");
43 else if(savedInstanceState != null && (bundle = savedInstanceState.getBundle("AppSearch")) != null)
44 sSearchQuery = bundle.getString("query");
49 public void onSaveInstanceState(Bundle savedInstanceState) {
50 Log.i("AppSearch", "Event: onSaveInstanceState");
51 Bundle bundle = new Bundle();
52 bundle.putString("query", sSearchQuery);
53 savedInstanceState.putBundle("AppSearch", bundle);
54 super.onSaveInstanceState(savedInstanceState);
58 public View onCreateView(LayoutInflater inflater, ViewGroup container,
59 Bundle savedInstanceState) {
60 Log.i("AppSearch", "Event: onCreateView");
61 if(AppContext == null)
62 AppContext = CampusAppContext.getInstance();
63 oFragmentView = inflater.inflate(R.layout.fragment_appsearch, container, false);
65 AppContext.setTitle("Search: " + sSearchQuery);
67 ViewPager viewPager = (ViewPager) oFragmentView.findViewById(R.id.viewpager);
68 setupViewPager(viewPager);
70 TabLayout tabLayout = (TabLayout) oFragmentView.findViewById(R.id.tabs);
71 tabLayout.setupWithViewPager(viewPager);
76 private void setupViewPager(ViewPager viewPager) {
77 final ViewPagerAdapter adapter;
78 if(oAppSearchLViewPagerAdapter != null)
79 adapter = oAppSearchLViewPagerAdapter;
81 adapter = new ViewPagerAdapter(getChildFragmentManager());
82 oAppSearchLViewPagerAdapter = adapter;
84 CampusAppFragment fragment;
85 Bundle args = new Bundle();
86 args.putString("query", sSearchQuery);
87 Log.i("AppSearch", "New result instances: "+sSearchQuery);
89 fragment = new AppSearchInternal();
90 fragment.setArguments(args);
91 adapter.addFragment("Campus App", fragment);
93 fragment = new AppSearchDhbw();
94 fragment.setArguments(args);
95 adapter.addFragment("DHBW Suche", fragment);
97 fragment = new AppSearchStuv();
98 fragment.setArguments(args);
99 adapter.addFragment("Stuv Suche", fragment);
102 viewPager.setAdapter(adapter);
103 int activeItem = viewPager.getCurrentItem();
104 AppSearchProvider activeProvider = (AppSearchProvider) adapter.getItem(activeItem);
105 activeProvider.executeSearch(false);
107 viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
109 public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
114 public void onPageSelected(int position) {
115 AppSearchProvider activeProvider = (AppSearchProvider) adapter.getItem(position);
116 activeProvider.executeSearch(false);
120 public void onPageScrollStateChanged(int state) {
127 class ViewPagerAdapter extends FragmentPagerAdapter {
128 private final List<Fragment> mFragmentDataList = new ArrayList<>();
129 private final List<String> mFragmentTitleList = new ArrayList<>();
131 public ViewPagerAdapter(FragmentManager manager) {
136 public Fragment getItem(int position) {
137 return mFragmentDataList.get(position);
141 public int getCount() {
142 return mFragmentDataList.size();
145 public void addFragment(String title, Fragment fragment) {
146 mFragmentDataList.add(fragment);
147 mFragmentTitleList.add(title);
151 public CharSequence getPageTitle(int position) {
152 return mFragmentTitleList.get(position);