【问题标题】:Android database created list, how use in ListFragmentAndroid数据库创建列表,如何在ListFragment中使用
【发布时间】:2014-03-23 15:39:41
【问题描述】:

好吧,我正在使用我现有的数据库,我用以下代码制作了一个列表“mSorular”:

public class TestAdapter {
private final Context mContext;
private SQLiteDatabase mDb;
private DataBaseHelper mDbHelper;

public TestAdapter(Context context) {
    this.mContext = context;
    mDbHelper = new DataBaseHelper(mContext);
}
    public List<soru> getTestData() {

    List<soru> mSorular = new LinkedList<soru>();
            try {
                Cursor mCur = mDb.query("Soru", null, null,
                        null,
                        null, 
                        null,
                        null,
                        null);

                if (mCur != null) {
                    if (mCur.moveToFirst()) {
                        do {

                            soru Soru = new soru();
                            Soru.setmSoru(mCur.getString(2));
                            Soru.setmCevap1(mCur.getString(3));
                            Soru.setmCevap2(mCur.getString(4));
                            Soru.setmCevap3(mCur.getString(5));
                            mSorular.add(Soru);

                        } while (mCur.moveToNext());
                    }
                }
                return mSorular;
            } catch (SQLException mSQLException) {
                Log.e(TAG, "getTestData >>" + mSQLException.toString());
                throw mSQLException;
            }
        }

之后我想在列表片段中使用我的 mSorular 列表。当我尝试

public class framelist extends ListFragment {
    private static String tag = "sqllist";

    TestAdapter adapter = new TestAdapter(this);    

它给出了这个错误:

构造函数TestAdapter(framelist)未定义

没有这个我的列表将返回空。那么如何在此列表片段中使用我的列表

【问题讨论】:

    标签: android database list android-fragments android-listfragment


    【解决方案1】:

    ListFragment 不是Context。首先将其更改为使用附加的Activity 作为Context,然后将其移动到Fragment 的onCreate() 方法中,因为在此调用之前可能没有附加Activity。 (实际上是在onAttach(Activity) 通话之后)

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate();
        TestAdapter adapter = new TestAdapter(getActivity());
        ...
    {
    

    【讨论】:

    • 另一个版本的智者要走了……好吧,我能再问一个问题吗?之后,制作列表需要一些时间,我可以在列表准备好之前显示加载屏幕吗?
    • 你当然可以。不过,您应该将长时间运行的任务移动到 AsyncTask 中。否则它将阻塞 UI 线程并使您的应用程序感觉很慢。这是一个例子:stackoverflow.com/questions/19926157/…
    猜你喜欢
    • 1970-01-01
    • 2013-04-27
    • 2015-01-03
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 2010-11-24
    • 2022-11-09
    • 1970-01-01
    相关资源
    最近更新 更多