Question

I have a ListView which has data from a parsed JSON. So this is my sample code:

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

My problem is that how can i pass my data to Intent without using

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

I mean, how to get my data from my ListView and give it to intent?

Was it helpful?

Solution

adapter.get(position) will return you a HashMap<String, String> for selected element. And use List<T> definition instead of ArrayList<T>

OTHER TIPS

From the documentation

public abstract void onItemClick (AdapterView parent, View view, int position, long id)

Callback method to be invoked when an item in this AdapterView has been clicked. Implementers can call getItemAtPosition(position) if they need to access the data associated with the selected item.

so in onItemClick you can retrieve your element :

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

and then get inName and inText values from elt.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top