2013-10-31 45 views
0

我想要在用户长时间点击并刷新列表时从列表中删除项目。使用OnItemLongClickListener删除项目后使用自定义添加器更新列表

当我使用此代码,它删除的项目,但不刷新列表:

codeListView.setOnItemLongClickListener (new OnItemLongClickListener() { 
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
     String sqlite_id = ((TextView) view.findViewById(R.id.code_id)).getText().toString(); 
     int sql_id = Integer.valueOf(sqlite_id.toString()); 
     if(fav == false){ 
      db.saveFav(sql_id); 
      text = "Zu den Favoriten hinzugefügt!"; 
     }else{ 
      db.delFav(sql_id); 
      text = "Aus den Favoriten gelöscht!"; 
      CustomAdapterCode adapter_code = (CustomAdapterCode)codeListView.getAdapter(); 
      adapter_code.notifyDataSetChanged(); 
     } 
     Context context = getApplicationContext(); 
     int duration = Toast.LENGTH_LONG; 
     Toast toast = Toast.makeText(context, text, duration); 
     toast.show(); 
     return true; 
    } 
}); 

现在我发现这个Android how to delete items from list with longclicklistener上计算器,但我的代码无法正常工作:

codeListView.setOnItemLongClickListener (new OnItemLongClickListener() { 
    @Override 
    public void onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
     String sqlite_id = ((TextView) view.findViewById(R.id.code_id)).getText().toString(); 
     int sql_id = Integer.valueOf(sqlite_id.toString()); 
     if(fav == false){ 
      db.saveFav(sql_id); 
      text = "Zu den Favoriten hinzugefügt!"; 
     }else{ 
      db.delFav(sql_id); 
      text = "Aus den Favoriten gelöscht!"; 
      CustomAdapterCode adapter_code = (CustomAdapterCode)codeListView.getAdapter(); 
      adapter_code.notifyDataSetChanged(); 
     } 
     Context context = getApplicationContext(); 
     int duration = Toast.LENGTH_LONG; 
     Toast toast = Toast.makeText(context, text, duration); 
     toast.show();    
    } 
}); 

CustomAdapter:

private class CustomAdapterCode extends ArrayAdapter<HashMap<String, Object>>{ 
    public CustomAdapterCode(Context context, int textViewResourceId, ArrayList<HashMap<String, Object>> Strings) { 
     super(context, textViewResourceId, Strings); 
    } 
    private class ViewHolder{ 
     TextView code_id, code_layout, name_layout, prio1, prio2, prio3; 
    } 

    ViewHolder viewHolder; 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     if(convertView==null){   
      convertView = inflater.inflate(R.layout.code_list_item, parent, false); 
      viewHolder=new ViewHolder(); 

      viewHolder.code_id=(TextView) convertView.findViewById(R.id.code_id); 
      viewHolder.code_layout=(TextView) convertView.findViewById(R.id.code_layout); 
      viewHolder.name_layout=(TextView) convertView.findViewById(R.id.name_layout); 
      viewHolder.prio1=(TextView) convertView.findViewById(R.id.prio1); 
      viewHolder.prio2=(TextView) convertView.findViewById(R.id.prio2); 
      viewHolder.prio3=(TextView) convertView.findViewById(R.id.prio3); 

      convertView.setTag(viewHolder); 

     }else{ 
      viewHolder=(ViewHolder) convertView.getTag(); 
     } 

     viewHolder.code_id.setText(codeList.get(position).get("_id").toString()); 
     viewHolder.code_layout.setText(codeList.get(position).get("code").toString()); 
     viewHolder.name_layout.setText(codeList.get(position).get("name").toString()); 
     viewHolder.prio1.setText(codeList.get(position).get("prio1").toString()); 
     viewHolder.prio2.setText(codeList.get(position).get("prio2").toString()); 
     viewHolder.prio3.setText(codeList.get(position).get("prio3").toString()); 


     return convertView; 
    } 
} 

Eclipse中说:

在该行

  • 多个标记实现android.widget.AdapterView.OnItemLongClickListener.onItemLongClick
  • 返回类型是不兼容的AdapterView.OnItemLongClickListener.onItemLongClick(适配器视图,视图的int,long)

回答

0

我发现这个问题,我忘了,从我用它来构建ListView的ArrayList中删除项目:

codeList.remove(position); 
相关问题