![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 shun ![]()
![]() |
private void ShowRecords(){ final ArrayList<Contact> contacts = new ArrayList<>(db.getAllContacts()); data=new dataAdapter(this, contacts); lv.setAdapter(data); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { dataModel = contacts.get(position); Toast.makeText(getApplicationContext(),String.valueOf(dataModel.getID()), Toast.LENGTH_SHORT).show(); } }); //加入侧滑显示的菜单 //1.首先实例化SwipeMenuCreator对象 SwipeMenuCreator creater = new SwipeMenuCreator() { @Override public void create(SwipeMenu menu) { // create置顶item SwipeMenuItem item1 = new SwipeMenuItem(getApplicationContext()); // set item background item1.setBackground(new ColorDrawable(Color.rgb(0xC9, 0xC9, 0xCE))); // set item width item1.setWidth(dp2px(90)); // set item title item1.setTitle("置顶"); // set item title fontsize item1.setTitleSize(18); // set item title font color item1.setTitleColor(Color.WHITE); // add to menu menu.addMenuItem(item1); //同理create删除item SwipeMenuItem deleteItem = new SwipeMenuItem(getApplicationContext()); // set item background deleteItem.setBackground(new ColorDrawable(Color.rgb(0xF9, 0x3F, 0x25))); // set item width deleteItem.setWidth(dp2px(90)); // set a icon deleteItem.setIcon(R.mipmap.ic_delete); // add to menu menu.addMenuItem(deleteItem); } }; // set creator lv.setMenuCreator(creater); //2.菜单点击事件 lv.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(int position, SwipeMenu menu, int index) { switch (index) { case 0: //置顶的逻辑 if (position == 0) { Toast.makeText(getApplicationContext(), "已经置顶", Toast.LENGTH_SHORT).show(); return false; } Contact str = contacts.get(position); for (int i = position; i > 0; i--) { Contact s = contacts.get(i - 1); contacts.remove(i); contacts.add(i, s); } contacts.remove(0); contacts.add(0, str); data.notifyDataSetChanged(); break; case 1: contacts.remove(position); db.deleteContact(contacts.get(position).getID()); data.notifyDataSetChanged(); break; } return false; } }); } |
別忘捐VP感謝幫助你的人 | 新手會員瞧一瞧 |
1樓 |
contacts.remove(position); //假設資料裡有 a、b、c、d 位置分別為 0、1、2、3 如果position = 2 剩下a、b、d
db.deleteContact(contacts.get(position).getID()); //contacts.get(position)這裡取得的資料是 d 所以到最後一筆會出現 IndexOutOfBoundsException 執行先後順序的問題 因為你的contacts的資料已經被刪除了 顛倒過來就可以了 db.deleteContact(contacts.get(position).getID()); contacts.remove(position); 不然就是另外宣告變數 Contact c = contacts.get(position); contacts.remove(position); db.deleteContact(c.getID()); 不過這麼久的文章 你應該自己解決了吧
本篇文章回覆於2018-04-28 00:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |