2014-06-17 72 views
0

,我已把它具有這種結構的數據庫上的一些值:分割字符串從數據庫之前綁定的ListView

Name1-Group1 
Name2-Group2 
... 

現在,我需要加載該值顯示他們在一個列表視圖,只是我需要顯示名稱。從數據庫中刪除組值不是一個解決方案,因爲我需要這個值來實現排序的可用性。

所以,這是我從數據庫中加載了名的方式:

cursor = getContentResolver().query(TravelOrderProvider.CONTENT_URI, PROJECTION, selection, arguments, order); 

然後,我這是怎麼綁定列表視圖:

ListAdapter mAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor, 
      new String[] {TravelOrder.NAME}, new int[] {android.R.id.text1}); 
listView.setAdapter(mAdapter); 

但在此之前結合他們,就像我說的在我需要獲取名稱之前,將它們拆分爲只包含名稱,不包含組,並將它們綁定到listview上。

所以,我不知道該怎麼做是如何從適配器獲取值(與它們分離),然後再次在適配器中獲取它們。

+0

您可以使用setViewBinder()見http://stackoverflow.com/questions/3609126/changing-values-from-cursor-using-simplecursoradapter更多信息 –

+0

呼叫setViewBinder如說上面或使用CursorWrapper來更改光標的一列 – pskink

回答

1

試試這個

ListAdapter mAdapter = new SimpleCursorAdapter(this, 
    android.R.layout.simple_list_item_1, 
    cursor,new String[] {TravelOrder.NAME}, 
    new int[]{android.R.id.text1}); 


mAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() { 

    @Override 
    public boolean setViewValue(View view, Cursor cursor,int columnIndex) { 

     if(view.getId() == android.R.id.text1) 
     { 
      TextView tvName= (TextView) view; 
      //do as you want split here 
      String[] separated = cursor.getString(columnName).split("-"); 
      separated[0]; // this will contain "Name" 
      separated[1]; // this will contain "Group" 

      tvName.setText(separated[0]); 


     return true; 
     } 

     return false; 
    } 
}); 

listView.setAdapter(mAdapter); 
+0

只有一個問題,我如何設置包含名稱(分隔[0])的字符串是必須顯示在列表視圖中的那個? – masmic

+0

完美,謝謝! – masmic