如何从listview适配器位置获取对象值

Dav*_*son 8 android listview listview-adapter

如何从适配器位置获取值,我的代码如下:

CategoriesXmlParser categoryXmlParser = new CategoriesXmlParser();
List<HashMap<String, Object>> categories = null;

try {
  categories = categoryXmlParser.parse(reader);
} catch (Exception e) {
  Log.d("Exception", e.toString());
}

String[] from = { "name", "image" };
int[] to = { R.id.nama_category, R.id.logo_category };

final SimpleAdapter adapter = new SimpleAdapter(getBaseContext(),
                    categories, R.layout.per_item_category, from, to);

mListView.setOnItemClickListener(new OnItemClickListener() {
  public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
    Object obj = mListView.getAdapter().getItem(position);
    String value = obj.toString();
    Log.d("MyLog", "Value is: "+value);
    String name = // how code to get name value.
  }
});
Run Code Online (Sandbox Code Playgroud)

如果我把它记录在MyLog中的logcat上我得到:

值为:{position = 12,image_path = http://192.168.103.121/xml/icon.png,link = http://192.168.103.121/xml/category.php?kat_id=13,name = Category 13}

所以我的问题是,我想从name获取值并存储到变量String name,我想在String名称中得到"Category 13".因为我想将它传递给另一个活动.

小智 34

看起来你用hashmap创建了对象,比如blablabla.put("name","value")?? 如是.试试这个:

mListView.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
        Object obj = mListView.getAdapter().getItem(position);
        String value = obj.toString();
        Log.d("MyLog", "Value is: "+value);
        String name = // how code to get name value.
    }
});
Run Code Online (Sandbox Code Playgroud)

改成:

mListView.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        HashMap<String, Object> obj = (HashMap<String, Object>) adapter.getItem(position);
            String name = (String) obj.get("name");
            Log.d("Yourtag", name);
    }
});
Run Code Online (Sandbox Code Playgroud)


小智 6

value = value.substring(value.indexOf("name=")+5,value.length()-1);
Run Code Online (Sandbox Code Playgroud)