我有一个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);
}
});
我的问题是如何在不使用
的情况下将数据传递给IntentString inName = ((TextView) view.findViewById(R.id.name)).getText().toString();
我的意思是,如何从我的ListView获取数据并将其赋予意图?
答案 0 :(得分:6)
adapter.get(position)
会为所选元素返回HashMap<String, String>
。
并使用List<T>
定义而不是ArrayList<T>
答案 1 :(得分: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值