1 package de.dhbwloe.campusapp.fragments;
4 import android.os.Bundle;
5 import android.support.v4.app.Fragment;
6 import android.util.Log;
7 import android.view.LayoutInflater;
8 import android.view.View;
9 import android.view.ViewGroup;
10 import android.widget.AdapterView;
11 import android.widget.ListView;
13 import java.util.ArrayList;
14 import java.util.List;
16 import de.dhbwloe.campusapp.CampusAppContext;
17 import de.dhbwloe.campusapp.CampusAppFragment;
18 import de.dhbwloe.campusapp.R;
19 import de.dhbwloe.campusapp.search.DhbwSearchHelper;
20 import de.dhbwloe.campusapp.search.SearchIndices;
21 import de.dhbwloe.campusapp.search.SearchResultListener;
22 import de.dhbwloe.campusapp.search.SearchTarget;
23 import de.dhbwloe.campusapp.search.StuvSearchHelper;
26 * A simple {@link Fragment} subclass.
28 public class AppSearchStuv extends CampusAppFragment implements AppSearchProvider {
29 private String sSearchQuery;
30 private boolean bQueryExecuted = false;
31 private boolean bExecuteOnload = false;
32 private AppSearchListAdapter appSearchAdapter;
33 private StuvSearchHelper seachHelper;
34 private ArrayList<AppSearchListItem> searchResultItems = new ArrayList<AppSearchListItem>();
37 public void onCreate(Bundle savedInstanceState) {
38 super.onCreate(savedInstanceState);
40 if((savedState = getArguments()) != null)
41 sSearchQuery = savedState.getString("query");
42 if(savedInstanceState != null && (savedState = savedInstanceState.getBundle("SearchStuv")) != null) {
43 sSearchQuery = savedState.getString("query");
44 if(savedState.getBoolean("executed")) {
51 public void onSaveInstanceState(Bundle savedInstanceState) {
52 Bundle bundle = new Bundle();
53 bundle.putString("query", sSearchQuery);
54 bundle.putBoolean("executed", bQueryExecuted);
55 savedInstanceState.putBundle("SearchStuv", bundle);
56 super.onSaveInstanceState(savedInstanceState);
60 public View onCreateView(LayoutInflater inflater, ViewGroup container,
61 Bundle savedInstanceState) {
62 if(AppContext == null)
63 AppContext = CampusAppContext.getInstance();
64 oFragmentView = inflater.inflate(R.layout.fragment_appsearch_list, container, false);
66 Bundle args = getArguments();
68 String queryString = args.getString("query");
69 if(queryString != null)
70 sSearchQuery = queryString;
73 ListView searchResultList = (ListView) oFragmentView.findViewById(R.id.searchResultItems);
74 if(appSearchAdapter == null)
75 appSearchAdapter = new AppSearchListAdapter(oFragmentView.getContext(), R.layout.fragment_appsearch_listitem, searchResultItems);
76 searchResultList.setAdapter(appSearchAdapter);
78 searchResultList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
80 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
81 AppSearchListItem item = searchResultItems.get(position);
84 navigateToResult(item);
91 public void executeSearch(final boolean reset) {
92 if(AppContext == null)
93 AppContext = CampusAppContext.getInstance();
94 if(bQueryExecuted && !reset)
96 bQueryExecuted = true;
98 searchResultItems.clear();
100 if(seachHelper == null)
101 seachHelper = new StuvSearchHelper();
102 seachHelper.search(sSearchQuery, new SearchResultListener() {
104 public void onSearchResultsReceived(List<AppSearchListItem> results) {
105 Log.i("SearchStuv", "Success: "+results.size());
106 for(AppSearchListItem result : results)
107 searchResultItems.add(result);
108 if(appSearchAdapter != null)
109 appSearchAdapter.notifyDataSetChanged();
113 public void onSearchFailed(String error) {
114 Log.i("SearchDhbw", "Failed: " + error);
120 private void navigateToResult(AppSearchListItem result) {
121 SearchTarget target = result.getTarget();
123 target.navigate(AppContext.getNavigationManager());