/** * Creates a new ListView component. * * @param container container that the component will be placed in */ public ListView(ComponentContainer container) { super(container); this.container = container; items = YailList.makeEmptyList(); // initialize selectionIndex which also sets selection SelectionIndex(0); view = new android.widget.ListView(container.$context()); view.setOnItemClickListener(this); view.setChoiceMode(android.widget.ListView.CHOICE_MODE_SINGLE); view.setScrollingCacheEnabled(false); listViewLayout = new LinearLayout(container.$context()); listViewLayout.setOrientation(LinearLayout.VERTICAL); txtSearchBox = new EditText(container.$context()); txtSearchBox.setSingleLine(true); txtSearchBox.setWidth(Component.LENGTH_FILL_PARENT); txtSearchBox.setPadding(10, 10, 10, 10); txtSearchBox.setHint("Search list..."); // set up the listener txtSearchBox.addTextChangedListener( new TextWatcher() { @Override public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) { // When user changed the Text adapter.getFilter().filter(cs); } @Override public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { // no-op. Required method } @Override public void afterTextChanged(Editable arg0) { // no-op. Required method } }); if (showFilter) { txtSearchBox.setVisibility(View.VISIBLE); } else { txtSearchBox.setVisibility(View.GONE); } // set the colors and initialize the elements // note that the TextColor and ElementsFromString setters // need to have the textColor set first, since they reset the // adapter Width(Component.LENGTH_FILL_PARENT); BackgroundColor(DEFAULT_BACKGROUND_COLOR); SelectionColor(DEFAULT_SELECTION_COLOR); textColor = DEFAULT_TEXT_COLOR; TextColor(textColor); textSize = DEFAULT_TEXT_SIZE; TextSize(textSize); ElementsFromString(""); listViewLayout.addView(txtSearchBox); listViewLayout.addView(view); listViewLayout.requestLayout(); container.$add(this); };