Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android从gridview中删除项目_Java_Android - Fatal编程技术网

Java Android从gridview中删除项目

Java Android从gridview中删除项目,java,android,Java,Android,我正在开发一个包含gridview的应用程序。我用一个包含图像和文本的自定义适配器填充这个网格 adapter = new CustomGrid(this, titlearray, imageId); grid=(GridView)findViewById(R.id.gridView1); grid.setAdapter(adapter); 当我单击任何项目时,会打开一个包含按钮的对话框,我想要的是当我单击此按钮时,项目将被删除。我检查了许多解决方案,他

我正在开发一个包含gridview的应用程序。我用一个包含图像和文本的自定义适配器填充这个网格

adapter = new CustomGrid(this, titlearray, imageId);
         grid=(GridView)findViewById(R.id.gridView1);
           grid.setAdapter(adapter);
当我单击任何项目时,会打开一个包含按钮的对话框,我想要的是当我单击此按钮时,项目将被删除。我检查了许多解决方案,他们说我应该更换适配器或使用新的适配器

我尝试了以下代码,将数据放入新的数组中,并将其加载到适配器中,然后在网格中使用它们:

                    String[] ntarray=new String[wcount];    
                    Drawable[] ndarray=new Drawable[wcount];





                if(position==0)
                {
                    for(int i=0;i<wcount;i++)
                    {
                        ntarray[i]=titlearray[i+1];
                        ndarray[i]=imageId[i+1];
                    }
                }


                if(position==wcount-1)
                {
                    for(int i=0;i<wcount-1;i++)
                    {
                        ntarray[i]=titlearray[i];
                        ndarray[i]=imageId[i];
                    }
                }


                 adapter = new CustomGrid(Wishlist.this, ntarray, ndarray);
                   grid.setAdapter(adapter);
                   adapter.notifyDataSetChanged();
                   dialog.hide();
是否有任何函数或方法可以帮助我在不创建新适配器的情况下删除此项,如果是,如何将其添加到customgrid类中?

进行以下更改:

    ArrayList<String> ntarray= new ArrayList<String>();    
    ArrayList<Drawable> ndarray= new ArrayList<Drawable>();

    if(position==0){
      for(int i=0;i<wcount;i++){
          ntarray.set(i, titlearray[i+1]);
          ndarray.set(i, imageId[i+1]);
      }
    }

   if(position==wcount-1){
      for(int i=0;i<wcount-1;i++){
         ntarray.set(i, titlearray[i]);
         ndarray.set(i, imageId[i]);
      }
   }

   adapter = new CustomGrid(Wishlist.this, ntarray, ndarray);
   grid.setAdapter(adapter);
   adapter.notifyDataSetChanged();
   dialog.hide();

为什么不在listadapter中添加一个remove()函数,并从列表中删除该remote()?下一个调用现有适配器上的adapter.notifyDataSetChanged(),它应该更新/刷新您可以在自定义适配器内创建一个方法,从ntarray和ndarray中删除该项,然后调用notifyDataSetChanged();更新你的gridview。我已经编辑了这个问题。你能帮我吗?请向上搜索@Rami谢谢:完成更多问题,我如何从适配器中清除所有项目?
    ArrayList<String> ntarray= new ArrayList<String>();    
    ArrayList<Drawable> ndarray= new ArrayList<Drawable>();

    if(position==0){
      for(int i=0;i<wcount;i++){
          ntarray.set(i, titlearray[i+1]);
          ndarray.set(i, imageId[i+1]);
      }
    }

   if(position==wcount-1){
      for(int i=0;i<wcount-1;i++){
         ntarray.set(i, titlearray[i]);
         ndarray.set(i, imageId[i]);
      }
   }

   adapter = new CustomGrid(Wishlist.this, ntarray, ndarray);
   grid.setAdapter(adapter);
   adapter.notifyDataSetChanged();
   dialog.hide();
    public class CustomGrid extends BaseAdapter{
        private Context mContext;
        private final ArrayList<String> web;
        private final ArrayList<Drawable> Imageid;

        public CustomGrid(Context c, ArrayList<String> web, ArrayList<Drawable> imageId ) {
              mContext = c;
              this.Imageid = imageId;
              this.web = web;
          }

        public void removeItem(int position){
             web.remove(position);
             Imageid.remove(position);
             notifyDataSetChanged();
        }

    ....
    }
public void clearData(){
      web.clear();
      Imageid.clear();
      notifyDataSetChanged();
}