Android ListView onItemClick

时间:2013-02-28 08:14:08

标签: android listview

我有一个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获取数据并将其赋予意图?

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:3)

来自documentation

  

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值