【问题标题】:Populating a fragment list from a database从数据库填充片段列表
【发布时间】:2012-12-26 04:41:18
【问题描述】:

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

 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 编程很陌生,如果我犯了一些小错误,请见谅 :)

谢谢,
阿列克萨

【问题讨论】:

  • CursorAdapter 更适合您的场景。 自定义适配器会更好。

标签: android sqlite listview android-fragments actionbarsherlock


【解决方案1】:

CursorAdapter 是你想要的。

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

【讨论】:

  • 在哪里实现这些方法以及用 CursorAdapter 扩展哪个类(我已经在扩展 ListFragment,这就是我问的原因)?
【解决方案2】:

最后我发现这是一个笨拙的入门错误,只需在 onViewCreated 使用 mySQLiteAdapter = new DatabaseAdapter(getSherlockActivity()); 并使用数组适配器就可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多