台灣最大程式設計社群網站
線上人數
1059
 
會員總數:240350
討論主題:186344
歡迎您免費加入會員
討論區列表 >> Android APP 開發 >> Listview滑動刪除 數組越界
[ 變換順序 ]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
Listview滑動刪除 數組越界
價值 : 200 QP  點閱數:84 回應數:0

樓主

shun
門外漢
0 1
8 0
發送站內信

因為接觸Android studio的時間沒有很長,最近在做listview滑動刪除時,不管建了幾筆資料,每次刪除到最後一筆資料,只要一按刪除就會直接已停止,查看logcat發現"java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0",覺得是因為這行db.deleteContact(contacts.get(position).getID())出了問題,附上程式碼請各位路過的大神幫個忙,教教小女子怎麼修改吧><

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;
}
});

}

搜尋相關Tags的文章: [ listview ] , [ 滑動 ] , [ 刪除 ] , [ 數組 ] , [ 越界 ] ,
本篇文章發表於2017-08-12 14:49
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
目前尚無任何回覆
[ 變換順序 ]   

回覆
如要回應,請先登入.