2012-06-25 74 views
0

前面:这是我第一次尝试Android应用程序。我在这个陌生的地方不知道要寻找什么来寻找我的问题的答案。获取对ListView中对象的引用

我所完成的是:

  • 创建一个自定义类myCustomClass与 '标题' 和 'youTubeUrl'
  • 创建一个ArrayList <myCustomClass>
  • 添加多个元素的属性,ArrayList的<myCustomClass>
  • 创建一个自定义ArrayAdapter并将其附加到arraylist。
  • 向自定义ArrayAdapter添加了onItemClickListener。

所有这些都很好。我想在ListView中显示标题,然后当用户单击列表视图项时,我想要获取对youtubeUrl属性的引用。

下面是我对适配器代码:

MyListAdapter myListAdapter = new MyListAdapter(this, R.layout.my_list, elements); 
myList.setAdapter(myListAdapter); 
myList.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     String item = ((TextView)view).getText().toString(); 
     Toast.makeText(getBaseContext(), item, Toast.LENGTH_LONG).show(); 
    } 
}); 
myListAdapter.notifyDataSetChanged(); 

感谢您的帮助。

+0

显示myListAdapter.java源代码 –

回答

1

您可以使用onItemClick中的position属性返回到您的数据源并找到相关项目。从那里你应该能够检索网址。

+0

感谢。我可以通过以下代码获得youTubeUrl: 'String youTubeUrl = elements.get(position).youtubeVideo; Toast.makeText(getBaseContext(),youTubeUrl,Toast.LENGTH_LONG).show();' –

0

正如另一张海报所暗示的,这取决于您在适配器中使用的是什么。假设它是MyCustomClass。你可以做这样的事情在你的onItemClick方法:

MyCustomClass selection = (MyCustomClass) getListView().getItemAtPosition(position); 
+0

Thanks for this。它可能会使代码在未来更具可读性。 我是否正确假设你的代码最终会得到与此相同的数据: 'MyCustomClass selection =(MyCustomClass)elements.get(postion);' –

+0

我相信是这样的。一个注意 - 适配器往往是动态的东西,所以我可能不会引用onItemClick()内的元素。如果元素标记为final,并且您确定不会更改适配器的模型,它不会导致问题,但它仍然不是一个好主意。 – Nick

相关问题