2012-06-25 78 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

相關問題