vendredi 22 mai 2015

SQLite android with SUGAR ORM

I'm using sugar orm for android database and I have 2 issues :

  1. I can't get images from sugar that have byte[]
  2. I can't delete data and refresh a list

Some errors from logcat :

  1. SkImageDecoder::Factory returned null

  2. SQLiteQuery: SELECT * FROM BOOKMARK_MODEL WHERE id=? LIMIT 1 threadid=1: thread exiting with uncaught exception (group=0xa62ce288)

My code :

public class Bookmark extends ActionBarActivity implements AdapterView.OnItemClickListener {

    BookmarkAdapter adapter;
    LayoutInflater vi;
    int Resource;
    ViewHolder holder;
    ListView listBookmark;
    List<BookmarkModel> list;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bookmark);
        getSupportActionBar().setHomeButtonEnabled(true);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        list = BookmarkModel.listAll(BookmarkModel.class);
        listBookmark = (ListView)findViewById(R.id.listBookmark);
        adapter = new BookmarkAdapter(this, R.layout.item_bookmark, list);
        listBookmark.setAdapter(adapter);
        TextView empty = (TextView)findViewById(R.id.textView);
        listBookmark.setEmptyView(empty);
        listBookmark.setOnItemClickListener(this);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_bookmark, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        if (id == R.id.action_settings) {
            return true;
        }else{
            finish();
        }

        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
        final long position = i + 1;
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Hapus Data");
        builder.setMessage("Apa kamu yakin untuk menghapus data ke "+position)
                .setCancelable(false)
                .setPositiveButton("Iya", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        BookmarkModel model = BookmarkModel.findById(BookmarkModel.class, 4L);
                        model.delete();
                        adapter.notifyDataSetChanged();
                    }
                })
                .setNegativeButton("Tidak", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        dialog.cancel();
                    }
                });
        AlertDialog alert = builder.create();
        alert.show();
    }

    static class ViewHolder {
        public ImageView img;
        public TextView brandName;
        public TextView descTerm;
        public TextView type;
        public TextView details;
    }

    class BookmarkAdapter extends ArrayAdapter<BookmarkModel>{
        List<BookmarkModel> model;
        Context mContext;

        public BookmarkAdapter(Context context, int resource, List<BookmarkModel> objects) {
            super(context, resource, objects);
            vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            Resource = resource;
            model = objects;
            mContext = context;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View v = convertView;
            if (v == null) {
                holder = new ViewHolder();
                v = vi.inflate(Resource, null);
                holder.img = (ImageView) v.findViewById(R.id.thumbnail);
                holder.brandName = (TextView) v.findViewById(R.id.brName);
                holder.type = (TextView) v.findViewById(R.id.type);
                holder.details = (TextView) v.findViewById(R.id.detailS);
                holder.descTerm = (TextView) v.findViewById(R.id.descTerm);
                v.setTag(holder);
            } else {
                holder = (ViewHolder) v.getTag();
            }
            byte[] data = model.get(position).getImg();
            Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length);
            holder.img.setImageBitmap(bmp);
            holder.brandName.setText(model.get(position).getBrandName());
            holder.type.setText(model.get(position).getType());
            holder.descTerm.setText(model.get(position).getDescTerm());
            String date = model.get(position).getDate().replace("\n", "");
            String location = model.get(position).getLocation().replace("\n", "");
            holder.details.setText(date +"\n"+ location);
            return v;
        }
    }
}

Aucun commentaire:

Enregistrer un commentaire