Задать вопрос
@arlanchik5

Как удалить элемент из массива GridView?

Всем привет,в моем фрагменте фотографии загружаются с помощью пикассо и располагаются в GridView .При долгом на жатии на одну из фотографий выходит меню с надписью удалить,какой метод мне нужно вписать для такого удаления элемента?
public class FragmentMems extends android.support.v4.app.Fragment {
    //константа для меню и удленения фоток
    final int MENU_DELETE_ID=1;
    private GridView gridView;
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_user_mems, container, false);
        gridView = (GridView) rootView.findViewById(R.id.gridview);
        registerForContextMenu(gridView);
        gridView.setAdapter(new GridViewAdapter(getContext()));
        //при нажатии открывается новая активити с fullimage
        gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
                Intent i =new Intent(getContext(),ZoomActivity.class);
                i.putExtra("id",position);
                startActivity(i);

            }
        });
        return rootView;   }
    //меню при долгом нажатии
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    switch (v.getId()){
        case R.id.gridview:
        menu.add(0,MENU_DELETE_ID,0,"Удалить");
        break;
    }
    super.onCreateContextMenu(menu,v,menuInfo);
    }
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case MENU_DELETE_ID:
                //?????
                break;
        }
        return super.onContextItemSelected(item);
    }
}


public class GridViewAdapter extends BaseAdapter {
    private Context context;
    public String[] items = {
            "http://topmemas.top/img/img/1517414160.jpg",
            "http://topmemas.top/img/img/1518633309.jpg",
            "http://topmemas.top/img/img/1517859960.jpg",
            

    };

    public GridViewAdapter(Context context){
        this.context=context;

    }
    @Override
    public int getCount() {
        return items.length;
    }
    @Override
    public Object getItem(int position) {
        return items[position]; }
    @Override
    public long getItemId(int position) {
        return position;
    }
    @Override
    public View getView(int position, View convertview, ViewGroup parent) {
        ImageView img;
        if (convertview == null){
            img = new ImageView(context);
            convertview = img;
            img.setPadding(10,10,10,10);

        }else {
            img =(ImageView)convertview;
        }

        Picasso.with(context).load(items[position]).placeholder(R.drawable.image)
                .resize(320,320).noFade()
                .into(img, new Callback() {
                    @Override
                    public void onSuccess() {
                    }
                    @Override
                    public void onError() {
                        Toast.makeText(context, "Ошибка загрузки", Toast.LENGTH_SHORT).show();

                    }
                });
        return convertview;
    }

}
  • Вопрос задан
  • 123 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
LemonRX
@LemonRX
Начинающий Android разработчик
Так как размерность массива в java определяется при создание массива вы не можете просто так удалить элемент массива, а следовательно удалить элемент из GridView, вам следует вместо обычного массива использовать ArrayList

После того как вы удалите элемент (remove(position)) ArrayList вам нужно вызвать метод notifyDataSetChanged()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы