FileDocCategorySizeDatePackage
ListSetSelectionTest.javaAPI DocAndroid 5.1 API4782Thu Mar 12 22:22:12 GMT 2015android.widget.listview.touch

ListSetSelectionTest

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

(Omit source code)

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

        super("com.android.frameworks.coretests", 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());
        }