2016-03-21 2 views
1

У меня есть GridView меню, которое состоит из 6 элементов сетки, каждая из которых содержат Bitmap фоновое изображение, то GridView адаптер для этого GridView показано ниже ...Как сохранить битмапы в адаптере GridView?

общественный конечный класс GridAdapter расширяет BaseAdapter {

private final List<Item> mItems = new ArrayList<Item>(); 
private final LayoutInflater mInflater; 
private Bitmap bitTemp; 

public GridAdapter(Context context) { 

    //Create a bit object 
    Bit bit = new Bit(R.drawable.rec2); 

    //Store bitmap inside a bitmap object 
    bitTemp = bit.blurredBitmap1; 



    //Inflater 
    mInflater = LayoutInflater.from(context); 


    //Add data items here 
    mItems.add(new Item("Mon",bitTemp,R.drawable.pic1)); 
    mItems.add(new Item("Tues",bitTemp,R.drawable.pic2)); 
    mItems.add(new Item("Wednesday",bitTemp,R.drawable.pic3)); 
    mItems.add(new Item("Thursday",bitTemp,R.drawable.pic4)); 
    mItems.add(new Item("Friday",bitTemp,R.drawable.pic5l)); 
    mItems.add(new Item("saturday", bitTemp,R.drawable.pic6)); 


} 

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

@Override 
public Item getItem(int i) { 
    return mItems.get(i); 
} 

@Override 
public long getItemId(int i) { 
    return mItems.get(i).drawableId2; 
} 

@Override 
public View getView(int i, View view, ViewGroup viewGroup) { 

    View v = view; 
    ImageView picture,mainBtn; 
    TextView name; 


    if (v == null) { 

     //Inflate gridItem layout 
     v = mInflater.inflate(R.layout.grid_item, viewGroup, false); 

     //Set Tag 
     v.setTag(R.id.picture, v.findViewById(R.id.picture)); 
     v.setTag(R.id.text, v.findViewById(R.id.text)); 
     v.setTag(R.id.mainBtn,v.findViewById(R.id.mainBtn)); 


    } 


    //Cast items 
    picture = (ImageView) v.getTag(R.id.picture); 
    name = (TextView) v.getTag(R.id.text); 
    mainBtn = (ImageView)v.getTag(R.id.mainBtn); 



    Item item = getItem(i); 


    //Link to item class 
    name.setText(item.name); 
    picture.setImageBitmap(item.bitmap1); 
    mainBtn.setImageResource(item.drawableId2); 


    return v; 
} 


//Create Bitmap images class 

public class Bit extends Object{ 


    public Bitmap blurredBitmap1; 

    Context context; 



    Bit(int resId) { 

     Bitmap bitmapTemp; 

     //Convert image into Bitmap 
     bitmapTemp =BitmapFactory.decodeResource(context.getResources(),resId); 

     //Then blur image 
     blurredBitmap1 = BlurBuilder.blur(context,bitmapTemp); 





    } 




} 

}

Ниже класс, который содержит элементы данных, которые будут переданы в пункты списка ....

// Grid data class 

     class Item { 

     public final String name; 
     public final Bitmap bitmap1; 
     public final int drawableId2; 




      Item(String name, Bitmap bitmap1,int drawableId2) { 

       this.name = name; 
       this.bitmap1 = bitmap1; 
       this.drawableId2 = drawableId2; 





      } 




    } 

Класса «бит» создают размытые растровые изображения, которые принимают в качестве параметра идентификатора ресурса, это инициализируется в GridAdapter Конструктора

public GridAdapter(Context context) { 

     //Create a bit object 
     Bit bit = new Bit(R.drawable.rec2); 

     //Store bitmap inside a bitmap object 
     bitTemp = bit.blurredBitmap1; 
...... 

} 

Однако, когда я запускаю этот код я получаю сообщение об ошибке ...

error log

Просьба предоставить простой ответ, как я совершенно новой для андроид,

спасибо

ответ

0

Контекст в классе Бит является нулевым, потому что вы не инициализируете.
поэтому код

bitmapTemp =BitmapFactory.decodeResource(context.getResources(),resId); 

бросок NullPointException.

Смежные вопросы