此文章供android开发初学者参考。
android 抓取ListView选择项的值,不是显示在ListView项中的数据,而是后台值也就是Adapter的数据源中某一项的值,类似于html hidden的功能。
ListView catgListView = (ListView) findViewById(R.id.catg_list_view);
// False data start
List<Map<String, Object>> catgListItem = new ArrayList<Map<String, Object>>();
List<MenuCatg> menuCatgList = appCtx.getMenuCatgList();
if (menuCatgList != null && !menuCatgList.isEmpty()) {
for (MenuCatg menuCatg : menuCatgList) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("imageView", R.drawable.drinks);
map.put("catgId", menuCatg.getId()); // 把id添加到数据源中,下面抓取的就是这个值
map.put("title", menuCatg.getName());
map.put("desc", menuCatg.getDescr());
catgListItem.add(map);
}
}
catgListView.setAdapter(new SimpleAdapter(this, catgListItem,
R.layout.catg_list_item,
new String[]{"imageView", "title", "desc"},
new int[]{R.id.catgItemImage, R.id.catg_item_title, R.id.catg_item_content}) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = super.getView(position, convertView, parent);
ViewGroup catgItem = (ViewGroup) convertView.findViewById(R.id.catg_item);
TextView catgItemTitle = (TextView) convertView.findViewById(R.id.catg_item_title);
catgItemTitle.setTypeface(FontUtils.getTypeFace(MainActivity.this));
TextView catgItemContent = (TextView) convertView.findViewById(R.id.catg_item_content);
return convertView;
}
});
catgListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Map<String, Object> itemMap = (Map<String, Object>) parent.getAdapter().getItem(position); // <---- 注意这里
Toast.makeText(MainActivity.this, (Integer)itemMap.get("catgId"), 500).show();
FragmentHelper.forward(MainActivity.this, new MainContentFragment());
}
});