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 に答える