SQLite数据库简化版,更新列表视图项,并插入新的,而不是

编程入门 行业动态 更新时间:2024-10-25 08:19:03
本文介绍了SQLite数据库简化版,更新列表视图项,并插入新的,而不是的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

在列表视图项目被点击,它就会在其中具有的EditText 另一个活动开了。编辑项后,当我保存它,项目没有得到在ListView更新,但它插入列表视图中的一个新的条目。

如何更新现有的项目,而不插入新的?

下面是我的code

活动: TRList.class

的ArrayList< HashMap的<字符串,字符串>>项目=新的ArrayList<>(); 名单< TRListFormat>表= trDb.getAllReminders(); 对于(TRListFormat VAL:名单){     HashMap的<字符串,字符串>图=新的HashMap<>();     map.put(标题,val.getTitle());     map.put(描述,val.getDes());     map.put(日期,val.getDate());     map.put(时间,val.getTime());     items.add(图) } 适配器=新SimpleAdapter(这一点,项目,R.layout.tr_list_format,             新的String [] {标题,说明,日期,时间},             新的INT [] {R.id.tbr_title,R.id.tbr_des,R.id.tbr_date,R.id.tbr_time}); LV =(ListView控件)findViewById(R.id.tbr_list); lv.setAdapter(适配器); lv.setOnItemClickListener(新AdapterView.OnItemClickListener(){         @覆盖         公共无效onItemClick(适配器视图<>适配器视图,视图中查看,INT位置,长的id){             意向意图=新的意图(TRList.this,TRTimeReminder.class);             intent.putExtra(remId,(int)的内径);             startActivity(意向);         } });

在的ListView 项被点击,它会打开另一活动

TRTimeReminder.class 我在菜单中设置保存按钮

案例R.id.menu_tbr_done:             。字符串title = edTitle.getText()的toString();             。字符串DES = edDes.getText()的toString();             字符串时间= timeView.getText()的toString()。             。字符串日期= dateView.getText()的toString();             捆绑额外= getIntent()getExtras()。             如果(临时演员!= NULL){                 int值= extras.getInt(remId);                 如果(值0){                     trDb.updateReminder(新TRListFormat(值,标题,脱,日期,时间));                 }             }             其他{                 trDb.addReminder(新TRListFormat(标题,脱,日期,时间));             }             意图I =新的意图(getApplicationContext(),TRList.class);             startActivity(ⅰ);             edTitle.getText()清()。             edDes.getText()清()。             dateView.setText(currDate);             timeView.setText(currTime);             返回true;

TRDBHelper.class

//添加新的提醒 无效addReminder(TRListFormat格式){     SQLiteDatabase DB = this.getWritableDatabase();     ContentValues​​值=新ContentValues​​();     values​​.put(COLUMN_TITLE,format.getTitle());     values​​.put(COLUMN_DES,format.getDes());     values​​.put(COLUMN_DATE,format.getDate());     values​​.put(COLUMN_TIME,format.getTime());     db.insert(TABLE_NAME,空,价值观);     db.close(); } //更新单提醒 公共无效updateReminder(TRListFormat格式){     SQLiteDatabase DB = this.getWritableDatabase();     INT的id = format.getId();     ContentValues​​值=新ContentValues​​();     values​​.put(COLUMN_ID,format.getId());     values​​.put(COLUMN_TITLE,format.getTitle());     values​​.put(COLUMN_DES,format.getDes());     values​​.put(COLUMN_DATE,format.getDate());     values​​.put(COLUMN_TIME,format.getTime());     db.update(TABLE_NAME,价值观,COLUMN_ID +=+ ID,NULL);     db.close(); }

解决方案

我觉得有问题,您的适配器。有2个可能出现的问题。

  • 在适配器的数据不更新。你说的对面,新的价值将被添加到ListView的。你真的确定吗?
  • 您还没有叫您的适配器的方法 notifyDataSetChanged() 你已经改变的值之后。
  • When item of listview is clicked, it gets opened in another activity which has edittext. After editing an item, when I save it, item does not get updated in the listview but it inserts a new entry in listview.

    How can I update existing item without inserting new?

    Here is my code

    Activity: TRList.class

    ArrayList<HashMap<String, String>> items = new ArrayList<>(); List<TRListFormat> list = trDb.getAllReminders(); for (TRListFormat val : list) { HashMap<String, String> map = new HashMap<>(); map.put("title",val.getTitle()); map.put("description", val.getDes()); map.put("date", val.getDate()); map.put("time", val.getTime()); items.add(map); } adapter = new SimpleAdapter(this, items, R.layout.tr_list_format, new String[] { "title", "description", "date", "time" }, new int[] {R.id.tbr_title, R.id.tbr_des, R.id.tbr_date, R.id.tbr_time }); lv = (ListView)findViewById(R.id.tbr_list); lv.setAdapter(adapter); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { Intent intent = new Intent(TRList.this, TRTimeReminder.class); intent.putExtra("remId", (int)id); startActivity(intent); } });

    When listView item is clicked, it opens another activity

    TRTimeReminder.class I have set save button in menu

    case R.id.menu_tbr_done: String title = edTitle.getText().toString(); String des = edDes.getText().toString(); String time = timeView.getText().toString(); String date = dateView.getText().toString(); Bundle extras = getIntent().getExtras(); if(extras != null) { int value = extras.getInt("remId"); if (value > 0) { trDb.updateReminder(new TRListFormat(value, title, des, date, time)); } } else{ trDb.addReminder(new TRListFormat(title, des, date, time)); } Intent i = new Intent(getApplicationContext(), TRList.class); startActivity(i); edTitle.getText().clear(); edDes.getText().clear(); dateView.setText(currDate); timeView.setText(currTime); return true;

    TRDBHelper.class

    //Add new reminder void addReminder(TRListFormat format){ SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(COLUMN_TITLE, format.getTitle()); values.put(COLUMN_DES, format.getDes()); values.put(COLUMN_DATE, format.getDate()); values.put(COLUMN_TIME, format.getTime()); db.insert(TABLE_NAME, null, values); db.close(); } //Update single reminder public void updateReminder(TRListFormat format){ SQLiteDatabase db = this.getWritableDatabase(); int id = format.getId(); ContentValues values = new ContentValues(); values.put(COLUMN_ID, format.getId()); values.put(COLUMN_TITLE, format.getTitle()); values.put(COLUMN_DES, format.getDes()); values.put(COLUMN_DATE, format.getDate()); values.put(COLUMN_TIME, format.getTime()); db.update(TABLE_NAME, values, COLUMN_ID+ " = " +id, null); db.close(); }

    解决方案

    I think there's problem with your adapter. There are 2 possible issues.

  • Data of adapter are not updated. You're saying opposite, new value is added to ListView. Are you really sure?
  • You haven't called your adapter's method notifyDataSetChanged() after you've changed values.
  • 更多推荐

    SQLite数据库简化版,更新列表视图项,并插入新的,而不是

    本文发布于:2023-10-27 00:15:35,感谢您对本站的认可!
    本文链接:https://www.elefans.com/category/jswz/34/1531763.html
    版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
    本文标签:视图   而不是   简化版   数据库   列表

    发布评论

    评论列表 (有 0 条评论)
    草根站长

    >www.elefans.com

    编程频道|电子爱好者 - 技术资讯及电子产品介绍!