[Robotium] Как прокрутить и нажать на элемент в GridVIew?

Я работаю над тестовым примером для моего приложения, есть активность с вкладками, каждая вкладка имеет вид сетки в каждой сетке.

Теперь я пытаюсь прокрутить gridView на первой вкладке и выберите checkBox, а затем нажмите на вторую вкладку, прокрутите и выберите checkBox, вот мой код

 GridView gridView = (GridView) solo.getView("truck_points");
    int gvCount = gridView.getCount();
    int nColumn = gridView.getNumColumns();
    int currentChilds = gridView.getChildCount();
    int numOfSelectedItems = randomItem(gvCount);
    int r = 14;
    int index = r%nColumn;
    scrollListTo(gridView, r, getInstrumentation());
    ViewGroup viewGroup = (ViewGroup) gridView.getChildAt(index);
    CheckBox checkBox = (CheckBox) viewGroup.getChildAt(0);
    solo.clickOnView(viewGroup);
    Log.e(TAG,checkBox.getText() + " item: "+ r+", index: "+index+", column: "+ nColumn);

    //Click on Post-Trip
    solo.clickOnView(solo.getView(android.widget.TextView.class, 9));
    solo.sleep(1000);
    solo.clickOnView(solo.getView("start",1));

    GridView gridView1 = (GridView) solo.getView("truck_points");
    int gvCount1 = gridView1.getCount();
    int nColumn1 = gridView1.getNumColumns();
    int currentChilds1 = gridView1.getChildCount();
    int numOfSelectedItems1 = randomItem(gvCount1);
    int r1 = 17;
    int index1 = r1%nColumn1;
    scrollListTo(gridView1, r1,getInstrumentation());
    ViewGroup viewGroup1 = (ViewGroup) gridView1.getChildAt(index1);
    CheckBox checkBox1 = (CheckBox) viewGroup1.getChildAt(0);
    solo.clickOnView(viewGroup1);
    Log.e(TAG,checkBox1.getText() + " item: "+ r1+", index: "+index1+", column: "+ nColumn1);
    solo.sleep(3000);

метод scrollListTo:

public <T extends AbsListView> void scrollListTo(final T listView,
                                                 final int index, Instrumentation instrumentation) {
    instrumentation.runOnMainSync(new Runnable() {
        @Override
        public void run() {
            listView.setSelection(index);
        }
    });
    instrumentation.waitForIdleSync();
}

Теперь в первой вкладке прокручиваем и выбираем очень хорошо, выводим логи:

10-05 22:41:50.786 1486-1517/? E/CheckTAG: Fifth Wheel item: 14, index: 2, column: 4

и это правильно.
во второй вкладке он не прокручивает и не выбирает, а просматривает правильные данные в журнале

10-05 22:41:56.106 1486-1517/? E/CheckTAG: Front Axle item: 17, index: 1, column: 4

Может ли кто-нибудь помочь, пожалуйста?

1 ответ

Решение

Я не знаю почему, но это сработало, когда я заменил это

GridView gridView1 = (GridView) solo.getView("truck_points");

от

GridView gridView1 = (GridView) solo.getView("truck_points",1);
Другие вопросы по тегам