Android: удалить вид из галереи - PullRequest
3 голосов
/ 25 апреля 2011

Я использую представление Галерея в своем приложении. Приложение разработано так, что я могу перетаскивать вид из этой галереи.

Как удалить перетаскиваемый вид из Галереи?

Ответы [ 2 ]

6 голосов
/ 25 апреля 2011

Вы удаляете его из базового адаптера. Если вы сделаете это правильно, Gallery обновится сам. В противном случае вызовите notifyDataSetChanged() на адаптере, чтобы запустить обновление Gallery.

0 голосов
/ 22 апреля 2013

Если вы переопределите ImageAdapter, вы можете изменять содержимое по своему усмотрению, добавляя методы для удаления или добавления элементов в список (ы) изображений, или в случае примера полностью меняйте списки на лету.При запуске я показываю баннер приложения, а затем изменяю галерею, чтобы отобразить режим, в котором приложение находится в виде слайдера.Каждый раз, когда вы вызываете метод, который изменяет набор данных в ImageAdapter, вызывайте imageAdapter.notifyDataSetChanged (), как CommonsWare говорит выше:

    // in onCreate
    _gallery = (Gallery) this.findViewById(R.id.gallery_header);
    _imageAdapter = new ImageAdapter(getApplicationContext(),screen_width,screen_height);
    _imageAdapter.setBannerMode(true);        
    _gallery.setAdapter(_imageAdapter);


    // the main activity, in my case in a message handler.

    _imageAdapter.setBannerMode(false);
    _imageAdapter.notifyDataSetChanged();
    _gallery.setSelection(0,true);

    // this is my extended image adapter class

   import android.content.Context;
   import android.view.View;
   import android.view.ViewGroup;
   import android.widget.BaseAdapter;
   import android.widget.Gallery;
   import android.widget.ImageView;
   import android.widget.ImageView.ScaleType;

public class ImageAdapter extends BaseAdapter
{
    private Context _context = null;
    private int[] imageIds = { R.drawable.add_banner,R.drawable.subtract_banner,R.drawable.multiply_banner,R.drawable.divide_banner };
    private int[] bannerIds = { R.drawable.mathpiggie_banner };
    private static boolean bannerEnabled = true;

    int _screen_width;
    int _screen_height;

    public ImageAdapter(Context context, int screen_width, int screen_height) {
        this._context = context; 
        _screen_width = screen_width;
        _screen_height = screen_height; 
    }

    public void setBannerMode(boolean val)
    {
        bannerEnabled = val;
    }

    @Override
    public int getCount()
        {
            if (bannerEnabled)
                return bannerIds.length;
            else
                return imageIds.length;
        }

    @Override
    public Object getItem(int index)
        {
            if (bannerEnabled)
                    return bannerIds[index];
            else
                return imageIds[index];
        }

    @Override
    public long getItemId(int index)
        {
            return index;
        }

    @Override
    public View getView(int postion, View view, ViewGroup group)
        {
            ImageView imageView = new ImageView(_context);
            if (bannerEnabled)
                imageView.setImageResource(bannerIds[postion]);
            else
                imageView.setImageResource(imageIds[postion]);

             return imageView;
        }
}
...