构造函数CursorAdapter(Context,Cursor,int)是未定义的。?

时间:2012-10-23 07:21:43

标签: android

请帮我解决此错误

public class CustomAdapter extends CursorAdapter {

public CustomAdapter(Context context,Cursor c,int flags) {
    **super(context,c,flags);** EEROR ON THIS LINE

}

Thread thread = new Thread() {

        public void run() {

            customAdapter = new CustomAdapter(MyActivity.this, databaseHelper.getAllData(), CursorAdapter.NO_SELECTION);

            listView.setAdapter(customAdapter);
        }

日志:

10-23 12:37:14.617: E/AndroidRuntime(668): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
10-23 12:37:14.617: E/AndroidRuntime(668):  at android.os.Handler.<init>(Handler.java:121)
10-23 12:37:14.617: E/AndroidRuntime(668):  at android.widget.CursorAdapter$ChangeObserver.<init>(CursorAdapter.java:449)
10-23 12:37:14.617: E/AndroidRuntime(668):  at android.widget.CursorAdapter.init(CursorAdapter.java:170)
10-23 12:37:14.617: E/AndroidRuntime(668):  at android.widget.CursorAdapter.<init>(CursorAdapter.java:116)
10-23 12:37:14.617: E/AndroidRuntime(668):  at com.example.databasesim.CustomAdapter.<init>(CustomAdapter.java:18)
10-23 12:37:14.617: E/AndroidRuntime(668):  at com.example.databasesim.MyActivity$1.run(MyActivity.java:39)

2 个答案:

答案 0 :(得分:0)

问题是你在非ui线程中进行UI动作..

您应该从线程中删除此代码,并在主线程中执行此操作,或使用runOnUiThread(action)检查http://developer.android.com/reference/android/app/Activity.html#runOnUiThread(java.lang.Runnable

答案 1 :(得分:0)

尝试在UI线程中创建适配器:

puvblic class MyActivity extends Activity {

    public void onCreate(...) {
       customAdapter = new CustomAdapter(MyActivity.this, databaseHelper.getAllData(), CursorAdapter.NO_SELECTION);
    }
}