private void update() { if (!automaticallyUpdateRowViews) { return; } super.removeAllViews(); addViews(); }
public void clickFirstItemContainingText(String targetText) { int itemIndex = findIndexOfItemContainingText(targetText); if (itemIndex == -1) { throw new IllegalArgumentException("No item found containing text \"" + targetText + "\""); } performItemClick(itemIndex); }
@Override public void run() { if (hasOnItemSelectedListener()) { onItemSelectedListener.onItemSelected(realAdapterView, getChildAt(position), position, getAdapter().getItemId(position)); } } });
@Implementation public Object getSelectedItem() { int pos = getSelectedItemPosition(); return getItemAtPosition(pos); }
@Implementation public int getPositionForView(android.view.View view) { while (view.getParent() != null && view.getParent() != realView) { view = (View) view.getParent(); } for (int i = 0; i < getChildCount(); i++) { if (view == getChildAt(i)) { return i; } } return AdapterView.INVALID_POSITION; }
private void invalidateAndScheduleUpdate() { valid = false; itemCount = adapter == null ? 0 : adapter.getCount(); if (mEmptyView != null) { updateEmptyStatus(itemCount == 0); } if (hasOnItemSelectedListener() && itemCount == 0) { onItemSelectedListener.onNothingSelected(realAdapterView); } new Handler().post(new Runnable() { @Override public void run() { if (!valid) { update(); valid = true; } } }); }
@Implementation public void setAdapter(Adapter adapter) { this.adapter = adapter; if (null != adapter) { adapter.registerDataSetObserver(new AdapterViewDataSetObserver()); } invalidateAndScheduleUpdate(); setSelection(0); }
protected void addViews() { Adapter adapter = getAdapter(); if (adapter != null) { if (valid && (previousItems.size() - ignoreRowsAtEndOfList != adapter.getCount() - ignoreRowsAtEndOfList)) { throw new ArrayIndexOutOfBoundsException("view is valid but adapter.getCount() has changed from " + previousItems.size() + " to " + adapter.getCount()); } List<Object> newItems = new ArrayList<Object>(); for (int i = 0; i < adapter.getCount() - ignoreRowsAtEndOfList; i++) { View view = adapter.getView(i, null, realAdapterView); // don't add null views if (view != null) { addView(view); } newItems.add(adapter.getItem(i)); } if (valid && !newItems.equals(previousItems)) { throw new RuntimeException("view is valid but current items <" + newItems + "> don't match previous items <" + previousItems + ">"); } previousItems = newItems; } }
@Override @Implementation public SpinnerAdapter getAdapter() { return (SpinnerAdapter) super.getAdapter(); }
public View findItemContainingText(String targetText) { int itemIndex = findIndexOfItemContainingText(targetText); if (itemIndex == -1) { return null; } return realAdapterView.getChildAt(itemIndex); }
@Implementation public Object getItemAtPosition(int position) { Adapter adapter = getAdapter(); return (adapter == null || position < 0) ? null : adapter.getItem(position); }
@Implementation public long getItemIdAtPosition(int position) { Adapter adapter = getAdapter(); return (adapter == null || position < 0) ? AdapterView.INVALID_ROW_ID : adapter.getItemId(position); }