2012-05-09 46 views
2

我檢索從一個元素字符串數據點擊我的列表視圖。的Android - 分離名單串

元素有兩行,一個名爲「當前」和一個名爲「名」。在我的listItemOnClick()中,我得到了被單擊的項目,然後對它做了toString()。我得到的是這樣的:

{current=SOMETHING, name=SOMETHING} 

我的問題是我如何分開這些?這裏是我的onclick代碼:

protected void onListItemClick(ListView l, View v, int position, long id) { 
    // TODO Auto-generated method stub 
    super.onListItemClick(l, v, position, id); 
    Object o = this.getListAdapter().getItem(position); 
    String current = o.toString(); 

    ((TextView) findViewById(R.id.check)).setText(current); 
} 

我想只顯示當前的例子。謝謝!

編輯

我的變量列表:

static final ArrayList<HashMap<String,String>> listItems = 
     new ArrayList<HashMap<String,String>>();; 
SimpleAdapter adapter; 

創建列表:

 for(int i=0; i<num_enter; i++){ 
    final int gi = i; 
    adapter=new SimpleAdapter(this, listItems, R.layout.custom_row_view,new String[]{"name", "current"}, new int[] {R.id.text1, R.id.text2}); 
    setListAdapter(adapter); 
    HashMap<String,String> temp = new HashMap<String,String>(); 
    temp.put("name", name[i]); 
    temp.put("current", "Value: " + Integer.toString(current[i])); 
    listItems.add(temp); 
    adapter.notifyDataSetChanged(); 
    } 
+0

列表中實際上有哪些對象?無論「o」是什麼,最好的辦法是獲得一個比Object更具體的類。 –

+0

在列表中只有文本。我添加了一些代碼 – arielschon12

回答

4

你可以這樣做的(醜陋的和容易出現的將來錯誤,當/如果格式更改) - 在字符串沒有正確格式的情況下添加錯誤檢查:

String s = "{current=CURRENT, name=NAME}"; 
s = s.substring(1, s.length() - 1); //removes { and } 
String[] items = s.split(","); 
String current = items[0].split("=")[1]; //CURRENT 
String name = items[1].split("=")[1]; //NAME 

按照你的編輯,似乎o是一張地圖,這樣你也可以寫(更好):

Map<String, String> map = (Map<String, String>) this.getListAdapter().getItem(position); 
String current = map.get("current"); 
String name = map.get("name"); 
0

它不應該是很困難的:

protected void onListItemClick(ListView l, View v, int position, long id) { 
// TODO Auto-generated method stub 
super.onListItemClick(l, v, position, id); 
Object o = this.getListAdapter().getItem(position); 
String current = o.toString(); 

// first remove the first and last brace 
current = current.substring(1,current.length()-1); 
// then split on a comma 
String[] elements = current.split(","); 
// now for every element split on = 
String[] subelements = elements[0].split("="); 
String key1 = subelements[0]; 
String value1 = subelements[1]; 

subelements = elements[1].split("="); 
String key2 = subelements[0]; 
String value2 = subelements[1]; 


((TextView) findViewById(R.id.check)).setText(current); 
} 
3

哇,大家正在走很長一段路。直接從視圖中獲取數據。在這種情況下,視圖v是您的佈局行,所以使用該視圖,您可以使用findViewById找到各個文本視圖,並從中獲取文本。使用你的代碼,它會是這樣的:

protected void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 

    TextView nameTxt = (TextView) v.findViewById(R.id.Text1); 
    TextView currentTxt = (TextView) v.findViewById(R.id.Text2); 
    String name = nameTxt.getText().toString(); 
    String current = currentTxt.getText().toString(); 
} 

希望這會有所幫助!