首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何修复回收视图项删除显示错误

如何修复回收视图项删除显示错误
EN

Stack Overflow用户
提问于 2021-12-12 09:05:39
回答 1查看 42关注 0票数 -1

我有一个回收视图。回收视图中有城市名称,当我长时间单击时,我想从回收视图中删除它。我在适配器类中编写了一些代码。当我点击城市名称时,我可以删除它们,但是当我再次查看回收视图时,我删除的城市名称再次出现。我怎么才能解决这个问题?

我的适配器类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Adapter extends RecyclerView.Adapter<Adapter.MyViewHolder>  {

ArrayList<City> arrayList;
Context context;

public Adapter(ArrayList<City> arrayList ,Context context ){
    this.arrayList = arrayList;
    this.context = context;

}

@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

    RecyclerviewRowBinding recyclerviewRowBinding = RecyclerviewRowBinding.inflate(LayoutInflater.from(parent.getContext()),parent,false);
    return new MyViewHolder(recyclerviewRowBinding);

}

@Override
public void onBindViewHolder(@NonNull Adapter.MyViewHolder holder, int position) {

    holder.binding.MytxtCities.setText(arrayList.get(position).cityName);


    holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            AlertDialog.Builder builder = new AlertDialog.Builder(context);
            builder.setIcon(R.drawable.warningicon);
            builder.setMessage("Are you sure that you want to delete "+arrayList.get(position).cityName);
            builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    arrayList.remove(position);
                    notifyItemRemoved(position);
                    notifyItemRangeChanged(position,arrayList.size());
                }
            }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {

                }
            }).show();

            return true;
        }
    });


    holder.itemView.setOnClickListener(v -> {
        Intent intent = new Intent(holder.itemView.getContext(),MainActivity.class);
        intent.putExtra("citId",arrayList.get(position).id);
        holder.itemView.getContext().startActivity(intent);
    });
}

@Override
public int getItemCount() {
    return arrayList.size();
}



public class MyViewHolder extends RecyclerView.ViewHolder {
    TextView Mytxt_cities;
    private RecyclerviewRowBinding binding;

    public MyViewHolder(@NonNull RecyclerviewRowBinding binding) {
        super(binding.getRoot());
        this.binding = binding;
        Mytxt_cities = itemView.findViewById(R.id.Mytxt_cities);



    }


}

}

我的回收视图类是城市类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class cities extends AppCompatActivity {

RecyclerView recyclerView ;
ArrayList<City> cityArrayList;
Adapter cityadapter;
ImageView cities_back_icon;



public void init(){

    cities_back_icon = findViewById(R.id.Id_cities_back_icon);
    cities_back_icon_click_register();

    cityArrayList = new ArrayList<>();
    recyclerView = findViewById(R.id.recyclerview_id);



    SQLGet_Data();

}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_cities);
    init();


}

private void cities_back_icon_click_register(){

    cities_back_icon.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(cities.this, MainActivity.class);
            startActivity(intent);
        }
    });
}

private void SQLGet_Data(){
    try {

        SQLiteDatabase sqLiteDatabase = this.openOrCreateDatabase("City",MODE_PRIVATE,null);
        Cursor cursor = sqLiteDatabase.rawQuery("SELECT*FROM city",null);
        int idIx = cursor.getColumnIndex("id");
        int nameIx = cursor.getColumnIndex("cityname");

        while(cursor.moveToNext()){
            String cityname = cursor.getString(nameIx);
            int id = cursor.getInt(idIx);
            City city = new City(cityname,id);
            cityArrayList.add(city);
        }
        cityadapter.notifyDataSetChanged();
        cursor.close();
    }

    catch (Exception e ){
       e.printStackTrace();
    }
                 /*---------------------- set recyclerview-----------------------------*/

    recyclerView.setLayoutManager(new LinearLayoutManager(cities.this));
    cityadapter = new Adapter(cityArrayList,this);
    recyclerView.setAdapter(cityadapter);





/*--------------------------We drew a line between the data in the recyclerview------------------------------------*/

    DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(recyclerView.getContext(), DividerItemDecoration.VERTICAL);
    Drawable drawable = ContextCompat.getDrawable(getApplicationContext(), R.drawable.custom_divider);
    dividerItemDecoration.setDrawable(drawable);
    recyclerView.addItemDecoration(dividerItemDecoration);

}

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-12 09:26:12

问题是,您只是从适配器内部的ArrayList中删除城市。但是这些城市仍然保留在SQL数据库中。然后,当您重新启动活动时,您的ArrayList将使用您的SQL数据库的数据创建,在这些数据中,那些已删除的城市仍然存在。

要连贯一致地删除城市,不仅需要删除适配器中的城市,还需要删除SQL数据库中的城市。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70325796

复制
相关文章
Flutter:如何修复/删除 .pub-cache 中的所有依赖项
如果您正在使用 Flutter 开发应用程序并遇到与系统缓存(在**./pub-cache**文件夹中)中的一个或多个软件包有关的问题,您可以通过执行以下命令重新安装所有缓存的依赖项:
徐建国
2022/06/24
8.5K0
Flutter:如何修复/删除 .pub-cache 中的所有依赖项
如何创建、更新和删除SQL 视图
视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。
用户4988376
2021/07/16
1.6K0
修复typecho删除分类后统计文章数的错误
为了图方便,直接在数据库里做了替换查询,不料typecho和WP一样,都会在metas表里存着分类和tag的统计信息,统计了这个分类下有多少篇文章,这个统计信息显示在分类和TAG管理页面。
老高的技术博客
2022/12/27
4490
如何定位前端UI显示错误
在做Web端功能测试时,尤其是前端UI页面检查的时候,有些字面显示或统计数字显示等,是无法在正常情况下显示出来的,只能等到满足一定的条件下,才会显示出来,这个时候光检查当前显示的样式感觉有些被动,测试不全面,其实可以借助工具来进行模拟数据进行验证。
wangmcn
2022/10/30
1.1K0
如何定位前端UI显示错误
crmeb 多商户1.4自购佣金显示错误问题修复方法
找到 \app\common\repositories\user\UserRepository.php 文件,复制下面的内容替换原来的 subOrder 方法(832-869行)
PHP开发工程师
2021/05/18
3310
Linux 错误修复笔记
apt 错误 :”subprocess installed post-installation script returned error exit status 1” 故障排除: apt-get autoclean apt-get autoremove apt-get update apt-get upgrade
Spaceack
2020/11/04
4.7K0
MySQL 1698错误修复
查看一下user表,错误的起因就是在这里, root的plugin被修改成了auth_socket,用密码登陆的plugin应该是mysql_native_password
华创信息技术
2022/05/28
1.6K0
如何修复WordPress内容更新和发布失败错误
如果您的WordPress网站在您尝试进行更改时返回诸如“更新失败”或“发布失败”之类的错误消息,那么结果不仅令人沮丧,而且还会阻止访问者访问他们需要的内容。
青梅煮码
2023/01/14
5.6K0
如何修复WordPress内容更新和发布失败错误
Exchange Server无法登录ECP,显示500意外错误?修复经验分享给你
有一客户的Exchange Server出问题了,Outlook客户端突然无法收发邮件,而且连OWA都无法登录,管理员想登录管理后台的时候才发现,输入管理员账号和密码后,ECP管理界面直接崩溃了,只显示500意外错误,一时无从查起。
IT狂人日志
2022/05/18
2.8K0
Exchange Server无法登录ECP,显示500意外错误?修复经验分享给你
js如何删除数组中指定一项
由于js中数组方法的多样性,我们可以使用很多很多方式来删除指定一项。 这里,俺给大家演示最普遍的一种方法。 思路如下: 获取到要删除项的位置 通过位置删除该项 实现方法 使用indexOf获取要要删除的元素位置,然后再使用splice方法删除。 splice方法通过删除现有元素和/或添加新元素来更改数组的内容。 实现代码 const array = [2, 5, 9]; console.log(array); const index = array.indexOf(5); //如果查询对象的话,可以使用
IT工作者
2022/01/24
2.1K0
easybcd删除win10启动项如何恢复?
制作windows启动盘; u盘启动 开始安装,选择左下角的“修复计算机”; 运行命令 bcdboot c:\windows /l zh-cn 从系统盘C:\Windows目录中复制启动文件,并创建BCD(中文)启动菜单,从而修复系统启动环境 修复成功!
用户1631856
2018/06/13
2.1K0
如何删除启动项中 program 空白程序启动项,最简教程;
参考文献:https://www.xtremerain.com/remove-unknown-program-startup/
西湖醋鱼
2020/12/30
5.7K0
如何删除启动项中 program 空白程序启动项,最简教程;
修复XiunoBBS后台关闭注册,前台显示语言包错误 原创 PHP XiunoBBS
XiunoBBS后台设置>基本设置>开启用户注册 关闭后,前台点击注册会提示: lang[user_create_not_on]  语言包错误; 这是因为官方提供的语言包里面没有添加关闭注册后的提示,
奇梦
2018/07/18
1.1K0
如何修复WordPress网站的Syntax Errors语法错误
如果您在WordPress建站中,经常在网站上尝试各种功能,那么有可能会收到以下错误“Syntax error,unexpected…”,请不要惊慌,你不是第一个在WordPress中收到语法错误的人,也不会是最后一个。
晓得博客
2021/06/15
5.4K0
如何修复WordPress网站的Syntax Errors语法错误
点击显示错误
双折线点击一个,另一显示a b 错误.PNG 正确.PNG 隐藏一条线 tooltip: { // 气泡 trigger: "axis"
用户4344670
2019/08/28
1.2K0
点击显示错误
[PHP] PHP 7.4.5的错误修复
PHP 7.4.5的错误修复 修复了错误#79364(复制空数组时,未指定下一个键)。 修复了错误#78210(无效的指针地址)。 curl: 修复了错误#79199(curl_copy_handle()内存泄漏)。 Date: 修复了错误#79396(DST向前跳转时,DateTime小时不正确)。 修复了错误#74940(DateTimeZone松散比较始终为true)。 FPM: 实现需求#77062(允许FPM监听数字[UG] ID。{owner,group})(Andre Nathan) Iconv: 修复了错误#79200(某些iconv函数截断Windows-1258)。 OPcache: 修复了错误#79412(Opcache阻塞并在特定脚本上造成100%CPU)。 session: 修复了错误#79413(session_create_id()对于活动会话失败) Shmop: 修复了错误#79427(shmop_open()中的整数溢出)。 SimpleXML: 修复了错误#61597(SXE属性可能缺少属性和内容)。 soap: 修复了错误#79357(缺少任何请求参数时SOAP请求段错误)。 Spl: 修复了错误#75673(SplStack :: unserialize()行为)。 修复了错误#79393(空合并运算符因SplFixedArray失败)。 标准: 修复了错误#79330(shell_exec()在空字节后会自动截断)。 修复了错误#79410(如果恰好是4095字节且没有换行符,system()会吞下最后一个块)。 修复了错误#79465(OOB读取urldecode())。(CVE-2020-7067) zip: 修复了错误#79296(ZipArchive :: open在空文件上失败)。 修复了错误#79424(调用globfree后php_zip_glob使用gl_pathc)。
唯一Chat
2020/04/24
1.6K0
webstorm配置eslint【标记错误,修复错误】
项目中经常用到eslint语法,结合个人经验,用webstorm配置eslint “文件”-》“默认设置”-》“语言&框架”-》“Code Quality Tools”-》“ESLint” 如图片所示
用户1149564
2018/05/28
3K0
GTID复制错误的修复
show slave status的报错信息如下: Last_SQL_Error: Error '@@SESSION.GTID_NEXT cannot be set to ANONYMOUS when @@GLOBAL.GTID_MODE = ON.' on query. Default database: ''. Query: 'CREATE TABLE IF NOT EXISTS infra.chk_masterha (`key` tinyint NOT NULL primary key,`val` int(10) unsigned NOT NULL DEFAULT '0') engine=MyISAM'
jeanron100
2019/05/15
2.5K0
GTID复制错误的修复
点击加载更多

相似问题

Android回收视图删除项

21

如何从回收视图中删除项

10

如何在回收视图中显示图像-回收视图图像显示错误

11

删除项后不刷新回收视图

74

如何从回收器视图持有类中删除项

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文