package com.rapidftr.activity; import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.ListView; import android.widget.TextView; import com.rapidftr.R; import com.rapidftr.RapidFtrApplication; import com.rapidftr.adapter.HighlightedFieldsViewAdapter; import com.rapidftr.adapter.pagination.PaginatedSearchResultsScrollListener; import com.rapidftr.model.Child; import com.rapidftr.repository.ChildRepository; import com.rapidftr.repository.ChildSearch; import com.rapidftr.service.FormService; import lombok.Cleanup; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; import java.util.List; public class SearchActivity extends RapidFtrActivity { private HighlightedFieldsViewAdapter highlightedFieldsViewAdapter; private FormService formService; private ChildSearch childSearch; private PaginatedSearchResultsScrollListener scrollListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_search_child); findViewById(R.id.search_btn).setOnClickListener(searchListener()); formService = inject(FormService.class); try { hideEnquiriesTabIfRapidReg(); } catch (JSONException e) { e.printStackTrace(); } } private void listView(List<Child> children) { highlightedFieldsViewAdapter = new HighlightedFieldsViewAdapter(this, children, Child.CHILD_FORM_NAME, ViewChildActivity.class); ListView childListView = (ListView) findViewById(R.id.child_list); if (children.isEmpty()) { childListView.setEmptyView(findViewById(R.id.no_child_view)); } childListView.setAdapter(highlightedFieldsViewAdapter); scrollListener = new PaginatedSearchResultsScrollListener(childSearch, highlightedFieldsViewAdapter); childListView.setOnScrollListener(scrollListener); } private View.OnClickListener searchListener() { return new View.OnClickListener() { @Override public void onClick(View v) { TextView searchTextView = (TextView) findViewById(R.id.search_text); String subString = searchTextView.getText().toString(); try { listView(search(subString)); } catch (Exception e) { Log.e("ChildSearchError", e.getMessage()); makeToast(R.string.fetch_child_error); } } }; } private List<Child> search(String subString) throws JSONException { subString = subString.trim(); if ("".equals(subString)) { return new ArrayList<Child>(); } this.childSearch = new ChildSearch(subString, inject(ChildRepository.class), formService.getHighlightedFields(Child.CHILD_FORM_NAME)); return childSearch.getRecordsForFirstPage(); } }