2017-06-02 73 views
0

我试图点击我的数组列表的第一个项目几个小时,我已经阅读了很多关于Stack Overflow的问题,教程和我试图实现的他们在许多方面,但它不起作用。如何通过Espresso执行ArrayList中的第一项的点击

clickView(getSearchActivity().hintListView); 

onData(anything()) 
    .onChildView(withId(R.id.hintLayout)) 
    .atPosition(0) 
    .perform(click()); 

onData(allOf(is(instanceOf(String.class)))) 
    .atPosition(0) 
    .perform(click()); 

onData(instanceOf(ArrayList.class)) 
    .atPosition(0) 
    .perform(click()); 

onData(instanceOf(String.class)) 
    .atPosition(0) 
    .perform(click()); 

onData(anything()) 
    .inAdapterView(withId(R.id.hintLayout)) 
    .atPosition(0) 
    .perform(click()); 

onData(anything()) 
    .inAdapterView(allOf(withId(R.id.hintLayout), isCompletelyDisplayed())) 
    .atPosition(0).perform(click()); 

我必须点击ListView中的第一项,即采取的ArrayList ID这ListView控件的是hintLayout。

有谁知道这是什么问题?它在哪里?

+0

你使用'ListView'或'RecyclerView'吗? –

+0

我使用的ListView –

+0

当我必须单击微调项是足够使用: '昂达(}这种(String.class)) .atPosition(1).perform(点击());现在' 我有很大的困难 –

回答

0

A ListView必须填充适配器。适配器完成后只需将其添加到您的ListView这样的:

private void setListAdapter(ListDataAdapter adapter){ 
    lvYourListView.setAdapter(adapter); 
} 

为了取回数据出来就OnClick事件中,你需要这样的事情在你onCreate()方法:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

lvYourListView = (ListView) findViewById(R.id.lvListview); 
     lvYourListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       ListData data = new ListData(); 

       data = (ListData)parent.getItemAtPosition(position); 

       doSomethingWithData(data); 

      } 
     }); 

如果您需要适配器的帮助 - 请告诉我。为了做到这一点,我需要查看更多的代码。