2012-12-25 74 views
0

是否可以按一個字段排序並查看另一個字段的行位置。 例如,第一個字段中的名稱和第二個字段中的年齡順序按名稱排列,並在第三個字段中查看從最年輕到最早的位置。android getPosition和排序

Ann 25years 2 // 2nd position in the age. 
Joe 30years 3 // 3rd position in the age. 
Ron 20years 1 // 1st position 

我想從「列時代」獲取位置,是否有可能?

我的代碼

Show_Activity

///ON RESUME  
    @Override 
    protected void onResume() { 
     // TODO Auto-generated method stub 
     super.onResume(); 

    datasource.open(); 
     Cursor cursor = datasource.Query(filter); 

     String[] columns = new String[] { "swimm_pos", "swimm_date","swimm_lap", "swimm_stroke", "swimm_time", "swimm_media", "swimm_efficiency", "swimm_note" }; 
     int[] to = new int[] { R.id.swimm_pos, R.id.swimm_date, R.id.swimm_lap, R.id.swimm_stroke, R.id.swimm_time, R.id.swimm_medialap, R.id.swimm_efficiency, R.id.swimm_note}; 

     SimpleCursorAdapter adapter = new SimpleCursorAdapter(
      this, 
      R.layout.list_layout, 
      cursor, 
      columns, 
      to); 

    adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() { 
      public boolean setViewValue(View view, Cursor cursor, int columnIndex) { 
       if (view.getId() == R.id.swimm_pos) 
       { 
        rowcounter = cursor.getPosition()+1; 
        String s = String.valueOf(rowcounter); 
        TextView tv = (TextView)view; 
        tv.setBackgroundColor(0xFF558866); 
        tv.setText(s); 
        return true; 
      } 
       return false;} 
     }); 

    this.setListAdapter(adapter); 
    datasource.close(); 
} 

將對DBAdapter

public Cursor Query(String filter) { 
      Cursor cursor = database.rawQuery 
        ("select _id, swimm_pos,swimm_date, swimm_lap,swimm_stroke,swimm_time,swimm_media,swimm_efficiency,swimm_note from swimm_table order by cast("+filter+" as integer) asc", null); 
      return cursor; 
     } 
......... 

,我已經按鈕來更改排序

.... 
    switch (v.getId()) { 
     case R.id.btn_sort_date: 
      filter = "swimm_date"; 
      datasource.open(); 
       cursor = datasource.Query(filter);   
       adapter = new SimpleCursorAdapter(
        this, 
        R.layout.list_layout, 
        cursor, 
        columns, 
        to); 
+0

您想修改按名稱排序的列表顯示嗎? 你從哪裏得到數據? –

回答

0

你可以以不同的方式。您可以通過編寫代碼來對年齡進行排序,然後插入表格中,或者您可以將不同年齡的人員放在不同的表格中,並使其年齡爲ORDER BY(按默認升序排列)。將這些年齡表標記爲主鍵自動增量。然後與包含人員姓名的表進行內部聯接。所以你會得到你上面提到的表格。

+0

我用我的真實代碼編輯(名字和年齡是一個例子,試圖更好地解釋)。我希望rowcounter always = swimm_lap的行順序位置。 (2圈= 1,20圈= 2,40圈= 3 ...),當我通過swimm_time設置順序或通過swimm_stroke命令時... – lucignolo