2013-02-28 124 views
5

我有一個ListView,它具有解析JSON中的數據。所以這是我的示例代碼:Android ListView onItemClick

ArrayList<HashMap<String, String>> myList = new ArrayList<HashMap<String, String>>(); 

    /** 
    * parsing JSON... 
    * ... 
    * ... 
    * ... 
    */ 

ListAdapter adapter = new SimpleAdapter(this, myList, R.layout.s_layout, new String[]{NAME, TEXT}, new int[]{R.id.name, R.id.text}); 
    setListAdapter(adapter); 

lv.setOnItemClickListener(new OnItemClickListener(){ 

     public void onItemClick(AdapterView<?> parent, View view, int position, long id){ 


      String inName = ((TextView) view.findViewById(R.id.name)).getText().toString(); 
      String inText = ((TextView) view.findViewById(R.id.text)).getText().toString(); 


      Intent intent = new Intent(getApplicationContext(), StaffProfileActivity.class); 

      intent.putExtra("staff_name", inName); 
      intent.putExtra("staff_desc", inText); 
      startActivity(intent); 
     } 
}); 

我的問題是,我怎樣才能把我的數據,意圖不使用

String inName = ((TextView) view.findViewById(R.id.name)).getText().toString(); 

我的意思是,如何從我的ListView得到我的數據,並給它意圖?

回答

6

adapter.get(position)將爲您返回所選元素的HashMap<String, String>。 並使用List<T>定義代替ArrayList<T>

+1

這個還可以嗎? Object ob = lv.getItemAtPosition(position); – elL 2013-02-28 08:30:18

+0

@elL,是的,這也是正確的 – 2013-02-28 09:48:56

+0

是的。這就是我接受它的原因。 – elL 2013-02-28 10:36:34

3

documentation

公共抽象無效onItemClick(適配器視圖父,瀏覽視圖, INT位置,長ID)

回調方法被調用時此AdapterView中的項目有 被點擊。如果 他們需要訪問與所選項目相關聯的數據,實施者可以調用getItemAtPosition(position)

所以在onItemClick可以檢索你的元素:

HashMap<String, String> elt = myList.getItemAtPosition(position); 

,然後從ELT得到inName和INTEXT值。

+0

這也是正確的 – elL 2013-02-28 09:00:21