2016-05-12 17 views
2

私はのLinearLayoutを見つけたい、アプリを持っているListViewコントロールを持っている上の 'ロード・アダプタデータ' を実行し、ID = order_untake_jijia_listview_jiaエスプレッソonDataハンドラは、エラーが表示

enter image description here

コードは次のとおりです。

onData(withClassName(endsWith("ListView"))) 
      .inAdapterView(allOf(withId(R.id.order_untake_jijia_listview_ll), hasSibling(withText("9.0")))) 
      .atPosition(0).onChildView(withId(R.id.order_untake_jijia_listview_jia)); 
      dataInteraction.perform(ViewActions.click()); 

しかし、私にはエラーがあります:

Error performing 'load adapter data' on view '(with id: com.edaixi:id/order_untake_jijia_listview_ll and has sibling: with text: is "9.0")'. 
Caused by: java.lang.RuntimeException: Action will not be performed because the target view does not match one or more of the following constraints: 
(is assignable from class: class android.widget.AdapterView and is displayed on the screen to the user) 
Target view: "LinearLayout{id=2131493753, res-name=order_untake_jijia_listview_ll, visibility=VISIBLE, width=170, height=50, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=572.0, y=25.0, child-count=3}" 
+0

私は "order_untake_jijia_listview_ll"という子を見つけたいと思っていますが、 "order_untake_jijia_listview_jia"という子供がいますが、その父親は.... –

+0

再フォーマットしてください。 –

+0

私はエスプレッソの新しいバージョンでこれはもはや問題ではないと思う。 – 476rick

答えて

0

onDataが間違っています。 onDataオブジェクトマッチャーをとります。これは、リストを作成するために使用されるカスタムモデルオブジェクトと一致するように意図されています。したがって、単純な文字列のリストがある場合は、onData(instanceOf(String.class)).atPosition(0)またはonData(is("This exact String at position 0"))と表示されます。

inAdapterViewは、データを含む特定のアダプタビューのインスタンスと一致するために使用されます。あなたが区別する必要がある画面上に複数のリストがあるときは、これが必要です。たとえば、R.id.list1という名前のListViewと、Stringの両方を含む第2のR.id.list2という名前がある場合は、最初のリストのオブジェクトと一致すると言いますと、onData(is("The String")).inAdapterView(withId(R.id.list1))となります。

アダプターの1つの項目をクリックするだけでよく、このような場合は通常、子ビューを指定する必要はありません。子ビュー項目に対してアサーションを行う場合、またはそのサブビューに個別の専用のクリックリスナーがある場合は、通常、onChildViewを使用します。

したがって、あなたが状況をovercomplicatedてきた、あなたはこのような何かにあなたのコードを更新することができるはずかのように思える:それはあなたの問題を解決しない場合は

onData(instanceOf(MyCustomClassOfObjectsInAdapter.java)) 
    .atPosition(0) 
    .perform(click()); 

、いくつかのレイアウトを提供してくださいあなたのリストアイテムの見た目のコードだけでなく、リストビューを持つメイン画面のレイアウトと、スクリーンショットの例を表示し、あなたがマッチ/アクト/アサートしようとしているものを明確にして、私はあなたを導くことができます必要なものを達成するために必要な正しい方法のセットに変換します。

希望に役立ちます!

関連する問題