-1

I'm trying to get image from SQLite database and show it in a custom list view , but usually facing error in converting byte to Bitmap.

package com.example.android.pets.data;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.annotation.LayoutRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.example.android.pets.R;

import java.util.ArrayList;
import java.util.List;


public class ListAddapter extends ArrayAdapter {
List list = new ArrayList();




public ListAddapter(@NonNull Context context, @LayoutRes int resource) {
    super(context, resource);
}

static class LayoutHandler {
    TextView NAME,BREED,ID;
    ImageView IMG;
}

@Override
public void add(@Nullable Object object) {
    super.add(object);
    list.add(object);
}

@Override
public int getCount() {
    return list.size();
}

@Nullable
@Override
public Object getItem(int position) {
    return list.get(position);
}


@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {

    View raw = convertView;
    LayoutHandler layoutHandler;


    if(raw == null){
        LayoutInflater layoutInflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        raw = layoutInflater.inflate(R.layout.activity_custom_list_view,parent,false);

        // get all componant
        layoutHandler = new LayoutHandler();
        layoutHandler.NAME = (TextView) raw.findViewById(R.id.nameCst);
        layoutHandler.BREED= (TextView) raw.findViewById(R.id.breedcst);
        layoutHandler.ID = (TextView) raw.findViewById(R.id.age);
        layoutHandler.IMG= (ImageView) raw.findViewById(R.id.imageViewCst);

        // pass all data to show
        raw.setTag(layoutHandler);

    }
    else {
        // if the raw is exist & assign each raw of data
        layoutHandler= (LayoutHandler) raw.getTag();


    }


    DataProvider dataProvider = (DataProvider) getItem(position);
    layoutHandler.NAME.setText(dataProvider.getName());
    layoutHandler.BREED.setText(dataProvider.getBreed());
    layoutHandler.ID.setText(dataProvider.getId());

    // convert byte to bitmap
    Bitmap bitmap = BitmapFactory.decodeByteArray(dataProvider.getImgURL(),0,dataProvider.getImgURL().length);
    layoutHandler.IMG.setImageBitmap(bitmap);
    return raw;
}
}

usually face error in this line

BitmapFactory.decodeByteArray(dataProvider.getImgURL(),0,dataProvider.getImgURL().length);

the error :

FATAL EXCEPTION: main java.lang.NullPointerException at com.example.android.pets.data.ListAddapter.getView(ListAddapter.java:95)

Phantômaxx
  • 37,901
  • 21
  • 84
  • 115
Bola
  • 11
  • 1

1 Answers1

0

make sure you have to init variable or object before using them.

Bola
  • 11
  • 1