Android - 从 GridView/Adapter 中删除项目

Posted

技术标签:

【中文标题】Android - 从 GridView/Adapter 中删除项目【英文标题】:Android - Removing Item from GridView/Adapter 【发布时间】:2014-01-11 00:40:26 【问题描述】:

我有一个由适配器填充的 GridView

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

Adapter的数据集基本就是一个shuffle List

static List<Integer>  mTlist = Arrays.asList(
    R.drawable.ac_pre, R.drawable.acc_pre,
    R.drawable.acd_pre, R.drawable.ach_pre,
    R.drawable.acs_pre, R.drawable.ad_pre,
    R.drawable.ah_pre, R.drawable.as_pre,
    R.drawable.dc_pre, R.drawable.dd_pre,
    R.drawable.dh_pre, R.drawable.ds_pre,
    R.drawable.fc_pre, R.drawable.fd_pre,
    R.drawable.fh_pre, R.drawable.fs_pre,
    R.drawable.jc_pre, R.drawable.jd_pre,
    R.drawable.jh_pre, R.drawable.js_pre,
    R.drawable.kc_pre, R.drawable.kd_pre,
    R.drawable.kh_pre, R.drawable.ks_pre,
    R.drawable.nc_pre, R.drawable.nd_pre,
    R.drawable.nh_pre, R.drawable.ns_pre,
    R.drawable.qc_pre, R.drawable.qd_pre,
    R.drawable.qh_pre, R.drawable.qs_pre,
    R.drawable.sec_pre, R.drawable.sed_pre,
    R.drawable.seh_pre, R.drawable.ses_pre,
    R.drawable.sic_pre, R.drawable.sid_pre,
    R.drawable.sih_pre, R.drawable.sis_pre,
    R.drawable.vc_pre, R.drawable.vd_pre,
    R.drawable.vh_pre, R.drawable.vs_pre,
    R.drawable.xc_pre, R.drawable.xd_pre,
    R.drawable.xh_pre, R.drawable.xs_pre,
    R.drawable.zc_pre, R.drawable.zd_pre,
    R.drawable.zh_pre, R.drawable.zs_pre
    );

private void mischen() 
    Collections.shuffle(mTlist);

在按下按钮后从不同的活动中我想删除一个项目

            ImageAdapter imad = new ImageAdapter(getBaseContext());
            Bundle extras = getIntent().getExtras(); 
            Integer pos = extras.getInt("draw");

            ImageAdapter.mTlist.remove(pos);
            imad.notifyDataSetChanged();

            finish();

pos 是 List (mTlist); 中项目的位置,finish() 我回到 GridView-Activity。

但问题是,根本没有任何变化!我举杯检查了移除后位置上的项目,它和以前一样。

请帮忙! 问候你

【问题讨论】:

你的方法不正确。使用 startActivityForResult 返回要从适配器中删除的所需项目。你可以从这里得到一个想法***.com/a/10407371/786337 好的,试过了——现在应用崩溃了…… 我想我把附加功能弄错了,修复了它,它又什么也没做......好吧,除了删除工作之外的一切 【参考方案1】:

您要求列表删除 Integer 类型的对象,这是不正确的,因为您使用的是 ArrayList。尝试以下方法删除您的对象

ImageAdapter.mTlist.remove(pos.intValue());

问候。

【讨论】:

但是使用“new ImageAdapter”我创建了一个新的适配器! ok 将列表切换到另一个类,因此不会因为设置一个新的适配器(您的建议)而搞砸,但仍然没有删除任何内容.... 检查编辑后的答案。您在传递要删除的 Integer 对象时犯了错误。希望它能解决问题。

以上是关于Android - 从 GridView/Adapter 中删除项目的主要内容,如果未能解决你的问题,请参考以下文章

从0到1实现一个Android路由——初探路由

从0到1实现一个Android路由——URL解析器

从0到1实现一个Android路由——多模块的APT收集路由

从0到1实现一个Android路由——拦截请求再跳转

从0到1实现一个Android路由——拦截请求再跳转

从0到1实现一个Android路由——对Kotlin模块的支持