gpt4 book ai didi

android - 删除时更新项目 ID

转载 作者:行者123 更新时间:2023-11-30 00:12:17 25 4
gpt4 key购买 nike

我有 5 个空的 TextView,我在其中添加名称。添加名称后,将其存储在数据库中。该数据库由两列组成:项目 ID 和项目名称。这是我正在做的事情的一个例子:

- Mark1    //ID=1, NAME= Mark1
- Mark2 //ID=2, NAME= Mark2
- Mark3 //ID=3, NAME= Mark3
- Empty
- Empty

我完美地添加和编辑了 TextView ,但在删除时遇到了问题。这与我从数据库获取值的方式有关,我将解释一下:

每次应用程序启动,或者我编辑、添加或删除一个元素时,我所做的就是从数据库中获取项目,将它们放入 map 中,然后将它们复制到 TextView 中(第一次是不可见的) )仅使已设置名称的可见。

这是我用来执行此操作的代码:

public void getTravelers() {
/*Create map where store items*/
Map<Integer, String> nameList = new HashMap<Integer, String>();
/*Lon in providers query() method to get database's items and save them into the map*/
Cursor c = getContentResolver().query(TravelersProvider.CONTENT_URI, PROJECTION, null, null, null);
if (c.moveToFirst()) {
do {
nameList.put(Integer.parseInt(c.getString(c.getColumnIndex(Travelers._ID))), c.getString(c.getColumnIndex(Travelers.NAME)));
}while(c.moveToNext());
}
if (c != null && !c.isClosed()) {
c.close();
}
/*Check size*/
int size = nameList.size();
if (size >= 1) {
/*Save items in TextViews*/
//TODO: This is the code I should fix
for (int i = 0; i <= size; i++) {
if (i==1) {
traveler1.setText(nameList.get(i).toString());
traveler1.setVisibility(View.VISIBLE);
}
if (i==2) {
traveler2.setText(nameList.get(i).toString());
traveler2.setVisibility(View.VISIBLE);
}
if (i==3) {
traveler3.setText(nameList.get(i).toString());
traveler3.setVisibility(View.VISIBLE);
}
if (i==4) {
traveler4.setText(nameList.get(i).toString());
traveler4.setVisibility(View.VISIBLE);
}
if (i==5) {
traveler5.setText(nameList.get(i).toString());
traveler5.setVisibility(View.VISIBLE);
}
}
}
}

问题出在for循环上。假设我要从上面命名的项目中删除ID=2的Mark2,那么新Map的大小将为2,并且它将输入(i == 1)(i == 2)。但是当进入最后一个时,它会执行 traveler2.setText(nameList.get(2).toString()); 并且如图所示,不存在任何元素ID=2,因为这是我删除的,它会抛出 NPE。

所以我的问题是,在不面临这个问题的情况下,正确的方法是什么?

最佳答案

你应该使用 switch case 而不是 for 循环。代码将不会循环。

关于android - 删除时更新项目 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23951120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com