从列表视图中获取值

时间:2013-03-21 01:27:39

标签: android android-listview

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

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

但是我希望那些从那个字符串中获得那些值的人获得那些。

我的onListItemClick Listner

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{

}

}

1 个答案:

答案 0 :(得分:1)

而不是

String return_data = o.toString();

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

MyClass return_data = (MyClass)o;

然后您可以像往常一样访问其字段并调用其方法。

在你的情况下:

HashMap<String, String> returndata = (HashMap<String, String>) o;