2013-02-28 8 views
5

मेरे पास एक सूची दृश्य है जिसमें एक पार्स किए गए 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

यह भी ठीक है इसका उपयोग कर रहा है? ऑब्जेक्ट ओबी = lv.getItemAtPosition (स्थिति); – elL

+0

@ एएलएल, हाँ, यह भी सही है –

+0

हां। यही कारण है कि मैंने इसे स्वीकार कर लिया। – elL

3

documentation

सार्वजनिक सार शून्य onItemClick (AdapterView माता पिता, देखें देखने के लिए, पूर्णांक स्थिति, लंबे आईडी)

कॉलबैक विधि से करने के बजाय परिभाषा लागू किया जा करने के लिए जब एक इस एडाप्टर व्यू में आइटम पर क्लिक किया गया है। कार्यान्वयन कॉल प्राप्त करें ItemAtPosition (स्थिति) यदि उन्हें चयनित आइटम से जुड़े डेटा तक पहुंचने की आवश्यकता है।

तो onItemClick में आप अपने तत्व प्राप्त कर सकते हैं:

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

और फिर elt से inName और intext मान मिलता है।

+0

यह भी सही है – elL