【问题标题】:Remove selected item from GridView从 GridView 中删除所选项目
【发布时间】:2013-05-06 11:05:14
【问题描述】:

有什么方法可以从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);
    }

}

任何人都可以有想法。 谢谢

【问题讨论】:

  • 从您的适配器中删除该项目并调用其 notifyDataSetChanged
  • 没有删除选中项的选项
  • 当然,您必须将其从适配器的数据集中删除,在您的情况下为 mThumbIds,当然您必须更改它以使其可变,例如数组列表
  • 这里只取整数作为参数 imageView.setImageResource(mThumbIds[position]);

标签: android gridview android-gridview


【解决方案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 即可让适配器知道其列表已被修改。

【讨论】:

  • 这里只取整数作为参数 imageView.setImageResource(mThumbIds[position]);
  • 有几十个示例向您展示如何在gridview/listview 中使用arraylist。参考其中之一。如果它适合您的用例,没有什么能阻止您使用整数数组列表。
【解决方案2】:

正如Teovaldpskink 建议的那样,您不能拥有固定的图像列表,然后实现您正在寻找的删除功能。如果您想添加移除功能,请更改您的设计并确保您的数据集也是可移除。到目前为止,您所尝试的似乎是使用一些非常基本的代码,这些代码很好地展示了基本的 GridView 功能。

试试这个。创建一个返回实际图像的图像数据集类。将图像存储在可以修改的列表中。向此数据集添加 setter/getter,并添加删除特定项目的方法。更改您的图像适配器以使用此新数据集中的图像。每当删除图像时,调用 adpater 上的 notifyDataSetChanged

祝你好运

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    相关资源
    最近更新 更多