package info.papdt.express.helper.ui; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.support.v7.widget.LinearLayoutManager; import android.view.Menu; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.Toast; import com.github.ksoichiro.android.observablescrollview.ObservableRecyclerView; import com.quinny898.library.persistentsearch.SearchBox; import java.util.ArrayList; import info.papdt.express.helper.R; import info.papdt.express.helper.api.KuaiDi100Helper; import info.papdt.express.helper.support.Utility; import info.papdt.express.helper.ui.adapter.CompanyListRecyclerAdapter; import info.papdt.express.helper.ui.common.MyRecyclerViewAdapter; public class CompanySelectActivity extends AbsActivity { private SearchBox mSearchBox; private ObservableRecyclerView mRecyclerView; private CompanyListRecyclerAdapter mCompanyListAdapter; public static final int REQUEST_CODE_SELECT = 0x100, RESULT_SELECTED = 0x100; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_select_company); setSwipeBackEnable(false); mToolbar.setTitle(""); new Handler().postDelayed(new Runnable() { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { openSearchBox(); } }); } }, 100); } public void openSearchBox() { mSearchBox.revealFromMenuItem(R.id.action_select_company, this); mSearchBox.setSearchListener(new SearchBox.SearchListener() { @Override public void onSearchOpened() { new SearchCompanyTask().execute(); } @Override public void onSearchCleared() { } @Override public void onSearchClosed() { close(); } @Override public void onSearchTermChanged() { new SearchCompanyTask().execute(mSearchBox.getSearchText()); } @Override public void onSearch(String result) { } }); } public void close() { mSearchBox.hideCircularly(this); hideSoftKeyboard(); finish(); } private void hideSoftKeyboard() { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(mSearchBox.getEditTextWindowToken(), 0); } @Override protected void setUpViews() { mRecyclerView = (ObservableRecyclerView) findViewById(R.id.company_list); mSearchBox = (SearchBox) findViewById(R.id.searchBox); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); mRecyclerView.setHasFixedSize(true); mSearchBox.setHintText(getString(R.string.search_hint_company)); mSearchBox.setLogoText(""); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.select_company_menu, menu); return super.onCreateOptionsMenu(menu); } public static void launchActivity(Activity mActivity) { Intent intent = new Intent(mActivity, CompanySelectActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK); mActivity.startActivityForResult(intent, REQUEST_CODE_SELECT); } public class SearchCompanyTask extends AsyncTask<String, Void, ArrayList<KuaiDi100Helper.CompanyInfo.Company>> { @Override protected ArrayList<KuaiDi100Helper.CompanyInfo.Company> doInBackground(String... params) { if (params.length > 0) { return KuaiDi100Helper.searchCompany(params [0]); } else { return KuaiDi100Helper.CompanyInfo.info; } } @Override protected void onPostExecute(ArrayList<KuaiDi100Helper.CompanyInfo.Company> result) { if (result != null) { mCompanyListAdapter = new CompanyListRecyclerAdapter(result); mRecyclerView.setAdapter(mCompanyListAdapter); mCompanyListAdapter.setOnItemClickListener(new MyRecyclerViewAdapter.OnItemClickListener() { @Override public void onItemClicked(int position) { Intent intent = new Intent(); intent.putExtra("company_code", mCompanyListAdapter.getItem(position).code); setResult(RESULT_SELECTED, intent); close(); } }); } } } public void mic(View v) { if (Utility.isApplicationAvailable(getApplicationContext(), "com.mokee.assist")) { Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("com.mokee.assist"); startActivity(LaunchIntent); } else { Toast.makeText( getApplicationContext(), R.string.toast_mic_unsupported, Toast.LENGTH_SHORT ).show(); } } }