5

我有一个 ListView,其中包含来自已解析 JSON 的数据。所以这是我的示例代码:

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

我的问题是我如何在不使用的情况下将数据传递给 Intent

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

我的意思是,如何从我的 ListView 中获取我的数据并将其赋予意图?

4

2 回答 2

6

adapter.get(position)将为您返回一个HashMap<String, String>选定元素。并使用List<T>定义而不是ArrayList<T>

于 2013-02-28T08:18:34.600 回答
3

文档

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

单击此 AdapterView 中的项目时要调用的回调方法。如果实施者需要访问与所选项目关联的数据,他们可以调用 getItemAtPosition(position)。

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

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

然后从 elt 获取 inName 和 inText 值。

于 2013-02-28T08:32:51.073 回答