gpt4 book ai didi

java - 访问数组列表中的元素

转载 作者:行者123 更新时间:2023-12-02 06:50:58 25 4
gpt4 key购买 nike

我有以下代码和下面描述的问题,带有数组列表:

class WP{
double id, type;
String shortname, name;
}

public class GPSAct extends Activity {
...
public ArrayList<WP> waypoints = new ArrayList<WP>();


public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
getData(where);

for(int i=0;i<waypoints.size();i++){
Toast.makeText(getApplicationContext(), waypoints.get(i).shortname, Toast.LENGTH_LONG).show();

}
}

public void getData(String where) {

WP wps = new WP();

try {
openDataBase();
Cursor cur = myDataBase.query(TABLE_WP, null, where, null, null, null, null);
cur.moveToFirst();

waypoints.clear();

for (int i = 0; i < cur.getCount(); i++) {

wps.id = cur.getDouble(0);
wps.type = cur.getDouble(0);
wps.shortname = cur.getString(1);
wps.name = cur.getString(2);

waypoints.add(i, wps);

}
cur.close();
...

问题是,当我尝试访问 waypoints arraylist(使用 waypoints.get(i),其中 i 从 0 开始直到 waypoints.size())时,数组的所有元素都具有相同的值(该值getData()) 中添加的最后一个 wps 元素。

最佳答案

这里有两个问题。

  • 喜欢Mocialov也就是说,您不会为每个项目移动光标。
  • 您一次又一次地添加同一个对象。您需要在循环内创建一个 new Wp() ,以便列表中的每个元素都不会指向同一事物。

类似这样的事情:

    do {
wps = new Wp();
wps.id = cur.getDouble(0);
wps.type = cur.getDouble(0);
wps.shortname = cur.getString(1);
wps.name = cur.getString(2);

waypoints.add(i, wps);
} while(cur.moveToNext());

关于java - 访问数组列表中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18037454/

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