2013-05-06 78 views
0

是否有任何方法從gridview中移除所選項目?從GridView中移除所選項目

我想從我的gridview中刪除所選的item

我沒有找到任何東西。我的代碼是

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); 
    } 

} 

誰能有辦法的。 感謝

+1

從適配器刪除該項目,並調用它notifyDataSetChanged – pskink 2013-05-06 11:17:19

+0

沒有選項刪除你的情況mThumbIds所選項目 – Unknown 2013-05-06 11:24:14

+1

肯定的是,你必須從你的適配器的數據集刪除它,當然你必須改變它,所以它是可變的,例如ArrayList – pskink 2013-05-06 11:44:07

回答

1

您正在使用的表:

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以使適配器知道其列表已被修改即可。

+0

不可能在列表中設置圖像.. – Unknown 2013-05-06 11:55:15

+0

這隻取整數作爲參數imageView.setImageResource(mThumbIds [position]); – Unknown 2013-05-06 12:01:46

+0

有幾十個示例向您展示如何在gridview/listview中使用arraylist。請參閱其中之一。如果它適合你的用例,那麼沒有什麼能阻止你使用整數的Arraylist。 – Teovald 2013-05-06 12:13:50

0

由於Teovaldpskink建議,您不能有一個固定的圖像列表,然後實現您正在尋找的刪除功能。如果你想添加刪除,改變你的設計,並確保你的數據集也是可移動。到目前爲止您嘗試過的東西似乎都使用了一些非常基本的代碼,這些代碼很適合顯示基本的GridView功能。

只要試試這個。創建一個返回實際圖像的圖像數據集類。將圖像存儲在可修改的列表中。添加setters/getters到這個數據集,並添加一個方法來刪除一個特定的項目。更改圖像適配器以使用此新數據集中的圖像。無論何時刪除圖像,請在adpater上致電notifyDataSetChanged

好運