FileDocCategorySizeDatePackage
ListSetSelectionTest.javaAPI DocAndroid 1.5 API4797Wed May 06 22:42:02 BST 2009com.android.frameworktest.listview.touch

ListSetSelectionTest

public class ListSetSelectionTest extends android.test.ActivityInstrumentationTestCase
Tests setting the selection in touch mode

Fields Summary
private com.android.frameworktest.listview.ListSimple
mActivity
private android.widget.ListView
mListView
Constructors Summary
public ListSetSelectionTest()

        super("com.android.frameworktest", ListSimple.class);
    
Methods Summary
protected voidsetUp()

        super.setUp();

        mActivity = getActivity();
        mListView = getActivity().getListView();
    
public voidtestPreconditions()

        assertNotNull(mActivity);
        assertNotNull(mListView);
    
public voidtestSetSelection()

        TouchUtils.dragQuarterScreenDown(this);
        TouchUtils.dragQuarterScreenUp(this);
        
        // Nothing should be selected
        assertEquals("Selection still available after touch", -1, 
                mListView.getSelectedItemPosition());
        
        final int targetPosition = mListView.getAdapter().getCount() / 2;
        
        mActivity.runOnUiThread(new Runnable() {
            public void run() {
                mListView.setSelection(targetPosition);
            }
        });
        getInstrumentation().waitForIdleSync();
        
        boolean found = false;
        int childCount = mListView.getChildCount();
        for (int i=0; i<childCount; i++) {
            View child = mListView.getChildAt(i);
            if (child.getId() == targetPosition) {
                found = true;
                break;
            }
        }
        assertTrue("Selected item not visible in list", found);
    
public voidtestSetSelection0()

        TouchUtils.dragQuarterScreenDown(this);
        TouchUtils.dragQuarterScreenDown(this);
        TouchUtils.dragQuarterScreenDown(this);

        // Nothing should be selected
        assertEquals("Selection still available after touch", -1,
                mListView.getSelectedItemPosition());

        mActivity.runOnUiThread(new Runnable() {
            public void run() {
                mListView.setSelection(0);
            }
        });
        getInstrumentation().waitForIdleSync();

        boolean found = false;
        int childCount = mListView.getChildCount();
        for (int i=0; i<childCount; i++) {
            View child = mListView.getChildAt(i);
            if (child.getId() == 0 && i == 0) {
                found = true;
                break;
            }
        }
        assertTrue("Selected item not visible in list", found);
    
public voidtestSetSelectionFromTop()

        TouchUtils.dragQuarterScreenDown(this);
        TouchUtils.dragQuarterScreenUp(this);
        
        // Nothing should be selected
        assertEquals("Selection still available after touch", -1, 
                mListView.getSelectedItemPosition());
        
        final int targetPosition = mListView.getAdapter().getCount() / 2;
        
        mActivity.runOnUiThread(new Runnable() {
            public void run() {
                mListView.setSelectionFromTop(targetPosition, 100);
            }
        });
        getInstrumentation().waitForIdleSync();
        
        View target = null;
        boolean found = false;
        int childCount = mListView.getChildCount();
        for (int i=0; i<childCount; i++) {
            View child = mListView.getChildAt(i);
            if (child.getId() == targetPosition) {
                target = child;
                found = true;
                break;
            }
        }
        assertTrue("Selected item not visible in list", found);
        
        if (target != null) {
            assertEquals("Selection not at correct location", 100 + mListView.getPaddingTop(), 
                    target.getTop());
        }