0

我有一个列表视图。当任何人单击列表时,它会将列表内容显示为

{first_name=abc, last_name=xyz, id=1, address=kolkata}

但我希望那些从那个字符串中单独获取这些值的人。

我的 onListItemClick 列表器

protected void onListItemClick(ListView l, View v, int position, long id) 
{
    super.onListItemClick(l, v, position, id);
    Object o = this.getListAdapter().getItem(position);
    String return_data = o.toString();

    Toast.makeText(this,  ""+return_data, Toast.LENGTH_LONG).show();

}

添加了包括列表适配器在内的总类

public class showUserInfoListActivity extends ListActivity {

ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();
static final String KEY_ID         = "id";
static final String KEY_FIRST_NAME = "first_name";
static final String KEY_LAST_NAME  = "last_name";
static final String KEY_ADDRESS    = "address";


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.add_user_info_list);

    //---get all Records---
    DataBaseAdapter db = new DataBaseAdapter(this);
    db.open();
    Cursor c = db.getAllRecords();
    if (c.moveToFirst())
    {
        do 
        {          
            HashMap<String, String> map = new HashMap<String, String>();
            // adding each child node to HashMap key => value
            map.put(KEY_ID, c.getString(0));
            map.put(KEY_FIRST_NAME, c.getString(1));
            map.put(KEY_LAST_NAME, " "+c.getString(2));
            map.put(KEY_ADDRESS, c.getString(3));

            // adding HashList to ArrayList
            menuItems.add(map);
        } while (c.moveToNext());
    }
    db.close();

    // Adding menuItems to ListView
    // All filed data are not shown in the list KEY_ID is hidden
    ListAdapter adapter = new SimpleAdapter(this, menuItems,R.layout.user_info_list_item,
                          new String[] { KEY_FIRST_NAME, KEY_LAST_NAME, KEY_ADDRESS, KEY_ID }, 
                          new int[] {R.id.first_name , R.id.last_name, R.id.address});
    setListAdapter(adapter);
}


//On select from the list show data
protected void onListItemClick(ListView l, View v, int position, long id) 
{
    super.onListItemClick(l, v, position, id);
    Object o = this.getListAdapter().getItem(position);
    //String return_data = o.toString();
    MyClass return_data = (MyClass)o;
    Toast.makeText(this,  ""+return_data, Toast.LENGTH_LONG).show();
}

class MyClass{

}

}

4

1 回答 1

1

代替

String return_data = o.toString();

您需要转换o为任何类别的对象。

MyClass return_data = (MyClass)o;

然后你可以像往常一样访问它的字段并调用它的方法。

在你的情况下:

HashMap<String, String> returndata = (HashMap<String, String>) o;
于 2013-03-21T01:31:20.313 回答