@Override public void onTextChanged(CharSequence s, int start, int before, int count) { mAdapter.getFilter().filter(s); ImageView imgView = (ImageView) findViewById(R.id.search_icon); if (s.length() > 0) { imgView.setImageResource(R.drawable.ic_action_navigation_close); imgView.setOnClickListener(this); imgView.setClickable(true); } else { imgView.setClickable(false); imgView.setImageResource(R.drawable.ic_action_search); imgView.setOnClickListener(null); } }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.base_control_searchable_layout); setResult(RESULT_CANCELED); edt_searchable_input = (EditText) findViewById(R.id.edt_searchable_input); edt_searchable_input.addTextChangedListener(this); Bundle extra = getIntent().getExtras(); if (extra != null) { if (extra.containsKey("resource_id")) { resource_array_id = extra.getInt("resource_id"); } if (extra.containsKey(OColumn.ROW_ID)) { mRowId = extra.getInt(OColumn.ROW_ID); } if (extra.containsKey("model")) { mModel = OModel.get(this, extra.getString("model"), null); } if (extra.containsKey("live_search")) { mLiveSearch = extra.getBoolean("live_search"); } if (extra.containsKey("selected_position")) { selected_position = extra.getInt("selected_position"); } if (extra.containsKey("search_hint")) { edt_searchable_input.setHint("Search " + extra.getString("search_hint")); } if (resource_array_id != -1) { String[] arrays = getResources().getStringArray(resource_array_id); for (int i = 0; i < arrays.length; i++) { ODataRow row = new ODataRow(); row.put(OColumn.ROW_ID, i); row.put(mRelModel.getDefaultNameColumn(), arrays[i]); objects.add(row); } } else { if (extra.containsKey("column_name")) { mCol = mModel.getColumn(extra.getString("column_name")); mRelModel = mModel.createInstance(mCol.getType()); objects.addAll(OSelectionField.getRecordItems(mRelModel, mCol)); } } mList = (ListView) findViewById(R.id.searchable_items); mList.setOnItemClickListener(this); mAdapter = new OListAdapter(this, android.R.layout.simple_expandable_list_item_1, objects) { @Override public View getView(int position, View convertView, ViewGroup parent) { View v = convertView; if (v == null) v = getLayoutInflater().inflate(getResource(), parent, false); ODataRow row = (ODataRow) objects.get(position); OControls.setText( v, android.R.id.text1, row.getString(mRelModel.getDefaultNameColumn())); if (row.contains(OColumn.ROW_ID) && selected_position == row.getInt(OColumn.ROW_ID)) { v.setBackgroundColor(getResources().getColor(R.color.control_pressed)); } else { v.setBackgroundColor(Color.TRANSPARENT); } return v; } }; if (mLiveSearch) { mAdapter.setOnSearchChange(this); } mList.setAdapter(mAdapter); } else { finish(); } }