2015-03-10 3 views
1

У меня есть GridView в приложении для Android. Я хочу перерисовать все изображения, когда я нажимаю кнопку BACK. Я не знаю, как это получить?Как перерисовать растровое изображение с адаптером GridView?

gridview.setAdapter(adapter); 

Это мой GetView() в адаптере:

public View getView(int position, View convertView, ViewGroup parent) { 
      ViewHolder holder = null; 
      if (convertView == null) { 
       convertView = inflater.inflate(R.layout.item_addimage_grid, 
         parent, false); 
       holder = new ViewHolder(); 
       holder.image = (ImageView) convertView 
         .findViewById(R.id.item_grida_image); 
       convertView.setTag(holder); 
      } else { 
       holder = (ViewHolder) convertView.getTag(); 
      } 

      if (position == Bimp.SelectBitmap.size()) { 
       holder.image.setImageBitmap(BitmapFactory.decodeResource(
         getResources(), R.drawable.pic_add)); 
       if (position == 3) { 
        holder.image.setVisibility(View.GONE); 
       } 
      } else { 
       holder.image.setImageBitmap(Bimp.SelectBitmap.get(position) 
         .getBitmap()); 
      } 

      return convertView; 
     } 

     public class ViewHolder { 
      public ImageView image; 
     } 

При нажатии на эту кнопку, я иду к другому фрагменту:

case R.id.title_btn_left:   
      Bimp.SelectBitmap.clear(); 
      FragmentTransaction ft = getFragmentManager().beginTransaction(); 
      SearchFragment searchFragment = new SearchFragment(); 
      ft.replace(R.id.fl_content, searchFragment); 
      ft.commit(); 
      break; 

Теперь, когда я нажимаю кнопку назад, Я установил Bimp.SelectBitmap.clear();. Но когда я получаю фрагмент избранных изображений, он слишком медленный и не отвечает gridview.setOnItemClickListener(). Я думаю, из-за того, что изображение не переработано, когда я перехожу к другому фрагменту.

+0

Вы хотите повторно использовать изображения в своем адаптере, когда находитесь в предыдущей деятельности? –

+0

Нет, мне не нужны эти изображения. –

+0

Ну ... если нет, тогда вы можете использовать 'Bitmap.recycle()' .. цикл в свой список и называть его до onDestroyed() –

ответ

1

setRecyclerListener(...) Установить на свой GridView:

gridview.setRecyclerListener(new RecyclerListener() { 
    @Override 
    public void onMovedToScrapHeap(View view) { 
     //get Bitmap by 'view' and release it here   
    } 
}); 

Надеется, что это поможет!

+0

Я получаю еще одну ошибку: 'java.lang.NullPointerException'. Это мой код: Bitmap bitmap = ((BitmapDrawable) view.getBackground()). GetBitmap(); bitmap.recycle(); at onMovedToScrapHeap (View view). –

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