2012-12-26 209 views
1

我有一個問題。 :) 在我正在開發的應用程序中,在一個部分中,我有兩個選項卡,它們分別由各自的片段和列表視圖運行。
現在,我需要用我在SQLite數據庫中讀取的數據填充這些列表。我創建了幾乎所有必要的類數據庫的一部分,但我被困在哪裏,我需要從我提供SQLHelper類得到這個數據從數據庫填充片段列表

public List<String> getAllRockBands() { 
    List<String> bandList = new ArrayList<String>(); 

    String selection = BAND_GENRE + "=1"; 
    String orderBy = BAND_NAME+" ASC"; 

    SQLiteDatabase db = sqLiteHelper.getReadableDatabase(); 
    Cursor cursor = db.query(BANDDATABASE_TABLE,new String[]{BAND_NAME}, selection, null, null, null, orderBy); 

    int index = cursor.getColumnIndex(BAND_NAME); 

    if (cursor.moveToFirst()) { 
     do { 
      String bandName = cursor.getString(index); 
       bandList.add(bandName); 
     } while (cursor.moveToNext()); 
    } 

    return bandList; 
} 

我listfragment擴展分類的一部分。它的代碼是目前:

public class RockAllFragment extends SherlockListFragment { 

private String[] bandList; 

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    return inflater.inflate(R.layout.my_list, null); 
} 

    @Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setRetainInstance(true); 
} 

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onViewCreated(view, savedInstanceState); 
    setListAdapter(new ArrayAdapter<String>(getSherlockActivity(), android.R.layout.simple_list_item_multiple_choice, android.R.id.text1, bandList)); 
} 
} 

private BandDatabaseAdapter mySQLiteAdapter;去和使用該方法通過僅適用於活動擴展類和不ListFragment?什麼是最好的方式來實現我想要做的事情? (附註:我非常新的節目爲Android,對不起,如果我做了一些微不足道的錯誤:)

感謝,
Aleksa

+0

「CursorAdapter」更適合您的場景。 _custom adapter_會更好。 –

回答

0

最後我發現這是一個笨拙的入門者錯誤,只是mySQLiteAdapter = new DatabaseAdapter(getSherlockActivity());onViewCreated和使用陣列適配器工作得很好。

2

一個CursorAdapter是你想要的。

您只需將它掛接到從查詢返回的Cursor即可。只需擴展CursorAdapter並實現newView()bindView()方法。

+0

在哪裏實現這些方法和哪些類用CursorAdapter擴展(我已經exdending ListFragment,這就是爲什麼我問)? – murtaugh