【问题标题】:Removing items from a ListAdapter not working从 ListAdapter 中删除项目不起作用
【发布时间】:2010-08-31 22:48:09
【问题描述】:
@Override  
 public boolean onContextItemSelected(MenuItem item) {  
  if(item.getTitle()=="Remove"){
   AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
   quotesAdapter.remove(quotes.get((int)info.id));
   quotesAdapter.notifyDataSetChanged();
   listView.setAdapter(quotesAdapter);
   serializeQuotes();
  }  
  else {
   return false;
  }  

  return true;  
 }  

什么都不做。如果我添加

this.quotesAdapter = new QuoteAdapter(this, R.layout.mainrow, quotes);

删除有效,但我认为这不是正确的做事方式。不知道怎么回事?

【问题讨论】:

    标签: java android listview android-arrayadapter listadapter


    【解决方案1】:

    如果quotes 是一个Java 数组,则它在运行时是不可修改的。尝试改用ArrayList<>

    如果quotesCursor,则需要从底层数据库中删除行,然后requery()Cursor

    【讨论】:

    • quotes 是一个 ArrayList
    • 然后尝试使用info.position,而不是info.idposition 是数组的索引; id 可能没有任何价值。
    • info.position 和 id 都返回一个值,因为我可以将对象打印到控制台。不幸的是,它仍未从列表中删除。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 2019-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    相关资源
    最近更新 更多