【问题标题】:Delete on LongPress长按删除
【发布时间】:2012-10-01 09:33:37
【问题描述】:

我已经实现了我的代码来删除和更改长按网格视图的视图。这是我更新的代码。现在我长按时遇到问题然后我必须更改所有项目图像(我在长按时向所有人添加更多视图 - 即十字按钮)

点击那个十字按钮我想删除那个项目。请帮帮我。

 public class Deletable extends Activity
{
    private LayoutInflater inflater = null;

    Boolean checkLong = false;

    Vector<Integer> mThumbsID =  new Vector<Integer>();


    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.grid_view);

        GridView gridview = (GridView) findViewById(R.id.gridview);
        final ImageAdapter adapter = new ImageAdapter(this);
        gridview.setAdapter(adapter);

        inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        mThumbsID.setSize(9);

        gridview.setOnItemLongClickListener(new OnItemLongClickListener() {

            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View strings,
                    int position, long id) {
                // TODO Auto-generated method stub

                Toast.makeText(Deletable.this, "Deletable "+ position, Toast.LENGTH_SHORT).show();
                checkLong = true;
                //adapter.removeitem(position);
                adapter.notifyDataSetChanged();
                return false;

            }
        });


        /*gridview.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                // TODO Auto-generated method stub

                checkLong = false;
                adapter.notifyDataSetChanged();

            }
        });*/
    }

    public class ImageAdapter extends BaseAdapter
    {
        private Context mContext;

        public ImageAdapter(Context c)
        {
            mContext = c;
        }

        public int getCount()
        {

            return mThumbsID.size();
        }

        public Object getItem(int position)
        {
            return null;
        }

        public long getItemId(int position)
        {
            return 0;
        }

        public void removeitem(int position){
            mThumbsID.remove(position);

        }

        // create a new ImageView for each item referenced by the Adapter
        public View getView(final int position, View convertView, ViewGroup parent)
        {
            View vi = convertView;
            ViewHolder holder =  new ViewHolder();

            if (vi == null) {
                vi = inflater.inflate(R.layout.custom_gridview, null);
            }

            holder.productImage = (ImageView)vi.findViewById(R.id.gv_item);
            holder.delete_icon = (ImageView)vi.findViewById(R.id.imageView1);

            holder.productImage.setImageResource(R.drawable.ic_launcher);


            if(checkLong==true){

                holder.delete_icon.setVisibility(View.VISIBLE);
                holder.delete_icon.setImageResource(R.drawable.cross);
              /*  holder.delete_icon.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View arg0) {
                        // TODO Auto-generated method stub

                        mThumbsID.remove(position);

                    }
                });
*/
            }

            else{

                holder.delete_icon.setVisibility(View.INVISIBLE);

            }

            /*if (convertView == null)
            {
                imageView = new ImageView(mContext);
                imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
                imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
                imageView.setPadding(8, 8, 8, 8);
            }
            else
            {
                imageView = (ImageView) convertView;
            }
            imageView.setImageResource(R.drawable.ic_launcher);*/
            return vi;
        }


          class ViewHolder
            {
                //TextView tvBrandName;
                ImageView productImage,delete_icon;
            }



    }

【问题讨论】:

  • 兄弟,它不重复。我在其中添加了一些代码,现在我根据添加请求帮助。如果可以的话请帮忙
  • 您可以编辑原始问题 ???上面的代码有什么问题?
  • 好吧,抱歉。现在请告诉我如何根据我的代码在 onItemLongClick 中删除 GridView 中的项目
  • @GauravArora 您可以编辑以澄清您的问题或提供其他数据,但您不应更改您的问题。你应该写一篇新文章。如果你对问题本身产生了巨大的变化,那么答案和 cmets 所指的内容就不清楚了。

标签: android gridview long-press


【解决方案1】:

需要从底层适配器(mThumbIds)的数据集中移除对应的对象,然后调用adapter.notifyDataSetChanged()

您可以将数据存储在 Vector 中,例如:

Vector<Integer> mThumbIds = new Vector<Integer>();

像这样初始化它:

for (int i = 0; i < mThumbIds.size(); i++) {
            mThumbIds.add(R.drawable.ic_launcher);
        }

removeitem()

public void removeitem(int position){
    mThumbIds.remove(position);

    }

然后删除..

public boolean onItemLongClick(AdapterView<?> parent, View strings,
                int position, long id) {
            // TODO Auto-generated method stub

            Toast.makeText(Deletable.this, "Deletable "+ position, Toast.LENGTH_SHORT).show();
            adapter.removeitem(position);
            adapter.notifyDataSetChanged();
            return false;

        }

【讨论】:

  • 兄弟,这就是我要问的。?如何动态删除该项目??
  • 兄弟,没有像 remove() 这样的方法可以从 mthumbsID 中删除项目。请检查
  • Nunu 我已经编辑了代码,还有一个问题,请检查
猜你喜欢
  • 2016-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 2012-04-11
  • 2014-05-31
  • 1970-01-01
相关资源
最近更新 更多