从数据库填充片段列表

时间:2012-12-26 04:41:19

标签: android sqlite listview android-fragments actionbarsherlock

我有一个问题。 :) 在我正在处理的应用程序中,在一个部分中,我有两个选项卡,它们分别由各自的片段和每个列表视图运行。
现在,我需要使用我在SQLite数据库中读取的数据填充这些列表。我为数据库部分创建了几乎所有必需的类,但是我被困在需要获取此数据的部分

 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;
 }

从我的sqlhelper类到我的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;并使用该方法只适用于Activity扩展类而不是ListFragment?什么是最好的方式来完成我想做的事情? (P.S.我对Android编程很新,对不起,如果我犯了一些小错误:)

谢谢,
Aleksa

2 个答案:

答案 0 :(得分:1)

CursorAdapter就是你想要的。

您只需将其挂钩到查询返回的Cursor即可。只需扩展CursorAdapter并实现newView()bindView()方法。

答案 1 :(得分:0)

最后我发现这是一个笨拙的首发错误,只是在mySQLiteAdapter = new DatabaseAdapter(getSherlockActivity());onViewCreated一起使用并使用阵列适配器工作正常。