2012-04-21 52 views
0

我想让我的头部使用SimpleAdapter,但我正在努力与一个项目。Android:如何通过onclick从SimpleAdapter返回选定的数据集?

如何返回所选视图的数据数组?

这是我用来生成它的代码。

// Data for List Adapter 
List<Map<String, Object>> resourceNames = new ArrayList<Map<String, Object>>(); 

// Make Hashmap of Results Hashmaps 
generateData(resourceNames); 

//Source information from Hashmap keys (FROM) 
String keynames[]={"names","descriptions"}; 

// Target Views for Data (TO) 
int[] targets = new int[] { R.id.textfield_name,R.id.textfield_description}; 

// Create my Simple Adapter 
SimpleAdapter adapter = new SimpleAdapter(this, resourceNames, 
     R.layout.listrow, keynames,targets 
     ); 

setListAdapter(adapter); 

}

然后我用一个onclick监听器使用下面的代码来获取数据:

setContentView(R.layout.listview); 


final ListView listView = getListView(); 
listView.setOnItemClickListener(new OnItemClickListener() { 


    public void onItemClick(AdapterView<?> arg0, View arg1, int position, 
      long arg3) { 
     Toast.makeText(arg1.getContext(), 
       getString(R.string.selected) + " " + position, 
       Toast.LENGTH_SHORT).show(); 

     // How do I return the entire data that I used     
     } 
}); 

我可以在上面看到我是如何得到的基于阵列的数据的位置但是如何返回视图中显示的实际结果数据?

+0

是我,为什么你就不能做到'resourceNames.get(位置)'来获取数据你要? – hwrdprkns 2012-04-21 07:30:09

+0

你是否试图获取'keynames数组'值,当它被选中,对吧?如果是,那么简单的做这个'resourceNames.get(position)'它会返回选定的值。 – RobinHood 2012-04-21 07:32:19

+0

我无法看到onclick监听器中的资源名称,但是如果我更改为某个字段,它现在可以工作!谢谢您的帮助! – 2012-04-22 08:31:48

回答

0

声明List<Map<String, Object>> resourceNames = new ArrayList<Map<String, Object>>();

全球和ListView的onItemClick()只是把线,

Map<String, Object> map = resourceNames.get(position); 
+0

谢谢!我不得不在课堂上将其分配为一个字段,否则它不会被onclick显示。 Ie changed:List > resourceNames = new ArrayList >(); to this.resourceNames =(和以前一样) – 2012-04-22 08:30:38