2013-02-28 11 views
5

Tôi có một ListView có dữ liệu từ JSON được phân tích cú pháp. Vì vậy, đây là mẫu mã của tôi:Android ListView onItemNhấp vào

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); 
     } 
}); 

Vấn đề của tôi là làm thế nào tôi có thể truyền dữ liệu của tôi để Ý định mà không sử dụng

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

Ý tôi là, làm thế nào để có được dữ liệu của tôi từ ListView của tôi và đưa nó cho ý định?

Trả lời

6

adapter.get(position) sẽ trả lại cho bạn HashMap<String, String> cho phần tử đã chọn. Và sử dụng List<T> định nghĩa thay vì ArrayList<T>

+1

đang sử dụng tính năng này cũng được không? Object ob = lv.getItemAtPosition (vị trí); – elL

+0

@ lL, vâng, điều này cũng đúng là –

+0

có. đó là lý do tại sao tôi chấp nhận nó. – elL

3

Từ documentation

public abstract trống onItemClick (AdapterView phụ huynh, Xem xem, int vị trí, id dài)

phương pháp gọi lại được gọi khi một mục trong AdapterView này đã được nhấp vào . Người triển khai có thể gọi getItemAtPosition (vị trí) nếu họ cần truy cập dữ liệu được liên kết với mục đã chọn.

như vậy trong onItemClick bạn có thể lấy yếu tố của bạn:

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

và sau đó nhận được inName và intext giá trị từ ELT.

+0

điều này cũng đúng – elL