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)