Удалить выбранный элемент из GridView

Есть ли способ удалить выбранный элемент из gridview.

Я хочу удалить выбранный item из моего gridview.

Я ничего не нашел. мой код

public class ImageAdapter extends BaseAdapter{

    Context context;

    public ImageAdapter(Context context)
    {
        this.context = context;
    }
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return  mThumbIds.length;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

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

        final ImageView imageView;
        if (convertView == null) {  // if it's not recycled, initialize some attributes
            imageView = new ImageView(context);
            imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(0, 5, 0, 0);


        } else {
            imageView = (ImageView) convertView;
        }

        imageView.setImageResource(mThumbIds[position]);
        return imageView;
    }

    public Integer[] mThumbIds = {
            R.drawable.sample_1,R.drawable.sample_2,R.drawable.sample_3,
            R.drawable.sample_3,R.drawable.sample_1,R.drawable.sample_2,
            R.drawable.sample_2,R.drawable.sample_3,R.drawable.sample_1

    };

}

//////////////////

public class ImageActivity extends Activity {

    ImageAdapter iAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_image);
         iAdapter = new ImageAdapter(this);
        final GridView gView = (GridView)findViewById(R.id.grid_view);
        gView.setAdapter(iAdapter);
        gView.setOnItemClickListener(new OnItemClickListener() {

             public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
                 //gView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
                // gView.setItemChecked(position, true);
                 Toast.makeText(ImageActivity.this, "" + position, Toast.LENGTH_SHORT).show();
                }

        });
        iAdapter.notifyDataSetChanged();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_image, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        if(item.getItemId() == R.id.menu_delete)
        {
            Toast.makeText(this, "Delete",Toast.LENGTH_SHORT ).show();
        }
        return super.onOptionsItemSelected(item);
    }

}

может у кого есть идеи. благодарить


person Monty    schedule 06.05.2013    source источник
comment
удалите этот элемент из вашего адаптера и вызовите его notifyDataSetChanged   -  person pskink    schedule 06.05.2013
comment
нет возможности удалить выбранный элемент   -  person Monty    schedule 06.05.2013
comment
конечно, вы должны удалить его из набора данных вашего адаптера, в вашем случае mThumbIds, конечно, вы должны изменить его, чтобы он был изменчивым, например. ArrayList   -  person pskink    schedule 06.05.2013
comment
это принимает только целое число в качестве параметра imageView.setImageResource(mThumbIds[position]);   -  person Monty    schedule 06.05.2013


Ответы (2)


вы используете таблицу:

public Integer[] mThumbIds = {
        R.drawable.sample_1,R.drawable.sample_2,R.drawable.sample_3,
        R.drawable.sample_3,R.drawable.sample_1,R.drawable.sample_2,
        R.drawable.sample_2,R.drawable.sample_3,R.drawable.sample_1}

Таблицы нельзя изменить.
Замените их списком, в котором вы сможете выполнять операции добавления или удаления. Просто вызовите notifyDataSetChanged при внесении изменений, чтобы сообщить адаптеру, что его список был изменен.

person Teovald    schedule 06.05.2013
comment
это принимает только целое число в качестве параметра imageView.setImageResource(mThumbIds[position]); - person Monty; 06.05.2013
comment
Есть десятки примеров, показывающих, как использовать массив в представлении сетки/списка. Обратитесь к одному из них. Ничто не мешает вам использовать Arraylist целых чисел, если он подходит для вашего варианта использования. - person Teovald; 06.05.2013

Как предложили Teovald и pskink, у вас не может быть фиксированного списка изображений, а затем реализовать функцию удаления, которую вы ищете. Если вы хотите добавить удаление, измените дизайн и убедитесь, что ваш набор данных также является удаляемым. То, что вы пробовали до сих пор, похоже, использует действительно базовый код, который хорошо показывает базовую функцию GridView.

Просто попробуйте это. Создайте класс набора данных изображения, который возвращает фактические изображения. Храните изображения в списке, который можно изменить. Добавьте сеттеры/геттеры к этому набору данных, а также добавьте метод для удаления определенного элемента. Измените адаптер образа, чтобы использовать образ из этого нового набора данных. Всякий раз, когда изображение удаляется, вызывайте notifyDataSetChanged в адаптере.

Удачи

person Raghu    schedule 08.05.2014