0

我正在研究网格视图。我需要使用 simplecursoradapter 使 gridview 连接到 sqlite。

但是,这段代码出错了

threadid=1; thread exiting with uncatught exception

让我先向您展示我的代码。

Wishlist.java

public class Wishlist extends Activity {

SQLiteConnector sqlCon;
private CustomWishlistsAdapter custAdapter;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.wishlist);

    GridView gv = (GridView)findViewById(R.id.gridview);



    Cursor c = managedQuery(????, null, null, null, Wishlists.NAME);
    String[] from = new String[] { Wishlists.NAME, Wishlists.NOTE };
    int[] to = new int[]  { R.id.name };

    custAdapter = new CustomWishlistsAdapter(this, 
            R.layout.wishlist_item, c, from, to);
    gv.setAdapter(custAdapter);

}


@Override
protected void onResume() {
    super.onResume();
    new GetItems().execute((Object[]) null);
}

//@SuppressWarnings("deprecation")
@Override
protected void onStop() {
    Cursor cursor = custAdapter.getCursor();

    if (cursor != null)
        cursor.deactivate();

    custAdapter.changeCursor(null);
    super.onStop();

}

private class GetItems extends AsyncTask<Object, Object, Cursor> {
    SQLiteConnector dbConnector = new SQLiteConnector(Wishlist.this);

    @Override
    protected Cursor doInBackground(Object... params) {
        return dbConnector.getAllWishlists();  
    }

    @Override
    protected void onPostExecute(Cursor result) {
        custAdapter.changeCursor(result);
        }
}
}

在上面的代码中,我应该在我的情况下放什么?(URI)

Cursor c = managedQuery(????, null, null, null, Wishlists.NAME);

这是简单的光标适配器类代码.. CustomWishlistAdapter.java

public class CustomWishlistsAdapter extends SimpleCursorAdapter {


EditText txtName;
EditText txtDesc;
EditText txtCreatedAt;
Button btnSave;
Button btnDelete;

String pid;

private int layout;
private ImageButton editBtn;
private ImageButton delBtn;
LayoutInflater inflator;

public CustomWishlistsAdapter(Context context, int layout, Cursor c,String[] from, int[] to) {
    super(context, layout, c, from, to,0);
    this.layout = layout;
    inflator= LayoutInflater.from(context);
}

public View newView(Context context, Cursor cursor, ViewGroup parent) {     
    View v = inflator.inflate(layout, parent, false);
    return v;
}


@Override
public void bindView(View v, final Context context, Cursor c) {
    final int id = c.getInt(c.getColumnIndex(Wishlists.ID));
    final String name = c.getString(c.getColumnIndex(Wishlists.NAME));
    final String note = c.getString(c.getColumnIndex(Wishlists.NOTE));
    final byte[] image = c.getBlob(c.getColumnIndex(Wishlists.IMAGE));
    ImageView iv = (ImageView) v.findViewById(R.id.inputphoto);


    // Change Image file to Byte Array
    if (image != null) {
        if (image.length > 3) {
            iv.setImageBitmap(BitmapFactory.decodeByteArray(image, 0,image.length));
        }
    }

    TextView tname = (TextView) v.findViewById(R.id.name);
    tname.setText(name);

    final SQLiteConnector sqlCon = new SQLiteConnector(context);

    editBtn=(ImageButton) v.findViewById(R.id.edit_btn);    
    editBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent intent=new Intent(context,AddEditWishlists.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);               
            intent.putExtra("id", id);
            intent.putExtra("name", name);
            intent.putExtra("note", note);
            intent.putExtra("blob", image);
            context.startActivity(intent);
        }

    });


    // Delete Product
    delBtn=(ImageButton) v.findViewById(R.id.del_btn);  
    delBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            sqlCon.deleteWishlist(id);  
            Intent intent=new Intent(context,MyWishlistsActivity.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent);
        }

    });     

    v.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent intent=new Intent(context,ViewWishlist.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);               
            intent.putExtra("id", id);
            intent.putExtra("name", name);
            intent.putExtra("note", note);
            intent.putExtra("blob", image);
            context.startActivity(intent);
        }
    });

}

}

记录猫输出

05-24 13:59:57.940: W/dalvikvm(5701): threadid=1: thread exiting with uncaught exception (group=0x40a4d1f8)
05-24 13:59:57.950: E/AndroidRuntime(5701): FATAL EXCEPTION: main
05-24 13:59:57.950: E/AndroidRuntime(5701): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.philips/com.example.philips.Wishlist}: java.lang.NullPointerException
05-24 13:59:57.950: E/AndroidRuntime(5701):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1978)
05-24 13:59:57.950: E/AndroidRuntime(5701):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2003)
05-24 13:59:57.950: E/AndroidRuntime(5701):     at android.app.ActivityThread.access$600(ActivityThread.java:123)
05-24 13:59:57.950: E/AndroidRuntime(5701):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1169)
05-24 13:59:57.950: E/AndroidRuntime(5701):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-24 13:59:57.950: E/AndroidRuntime(5701):     at android.os.Looper.loop(Looper.java:137)
05-24 13:59:57.950: E/AndroidRuntime(5701):     at android.app.ActivityThread.main(ActivityThread.java:4446)
05-24 13:59:57.950: E/AndroidRuntime(5701):     at java.lang.reflect.Method.invokeNative(Native Method)
05-24 13:59:57.950: E/AndroidRuntime(5701):     at java.lang.reflect.Method.invoke(Method.java:511)
05-24 13:59:57.950: E/AndroidRuntime(5701):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
05-24 13:59:57.950: E/AndroidRuntime(5701):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
05-24 13:59:57.950: E/AndroidRuntime(5701):     at dalvik.system.NativeStart.main(Native Method)
05-24 13:59:57.950: E/AndroidRuntime(5701): Caused by: java.lang.NullPointerException
05-24 13:59:57.950: E/AndroidRuntime(5701):     at android.content.ContentResolver.acquireProvider(ContentResolver.java:913)
05-24 13:59:57.950: E/AndroidRuntime(5701):     at android.content.ContentResolver.query(ContentResolver.java:305)
05-24 13:59:57.950: E/AndroidRuntime(5701):     at android.app.Activity.managedQuery(Activity.java:1706)
05-24 13:59:57.950: E/AndroidRuntime(5701):     at com.example.philips.Wishlist.onCreate(Wishlist.java:24)
05-24 13:59:57.950: E/AndroidRuntime(5701):     at android.app.Activity.performCreate(Activity.java:4465)
05-24 13:59:57.950: E/AndroidRuntime(5701):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
05-24 13:59:57.950: E/AndroidRuntime(5701):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1942)
4

0 回答 0