猿问

List DataModel 只读取最后一个元素

我有一个使用位置更新创建的数据库,并且在数据库中有一堆位置 x 和 y。在第二种方法中,readFirestore() 读取位置数据并比较来自 sqlite 数据库的最喜欢的位置,如果最喜欢的位置靠近来自 firestore 的数据,它会将位于同一位置的活动名称写入另一个数据库。但是当我想比较firestore方法中最喜欢的位置时,数据库中只有最后一项。我看了看日志。


代码 1:


public List<DataModel> listFavoriteLocation(){

    db = new DatabaseHelper(this);

    SQLiteDatabase mydb = db.getWritableDatabase();

    List<DataModel> data=new ArrayList<>();

    Cursor csr = mydb.rawQuery("select * from "+TABLE+" ;",null);

    StringBuffer stringBuffer = new StringBuffer();

    DataModel dataModel = null;

    while (csr.moveToNext()) {

        dataModel= new DataModel();

        String FAVCurrentLocationLAT = csr.getString(csr.getColumnIndexOrThrow("FAVCurrentLocationLAT"));

        String FAVCurrentLocationLONG = csr.getString(csr.getColumnIndexOrThrow("FAVCurrentLocationLONG"));

        dataModel.setFAVCurrentLocationLAT(FAVCurrentLocationLAT);

        dataModel.setFAVCurrentLocationLONG(FAVCurrentLocationLONG);

        stringBuffer.append(dataModel);

        data.add(dataModel);


    }

    for (DataModel mo:data ) {

        this.List_FAVCurrentLocationLAT = mo.getFAVCurrentLocationLAT();

        this.List_FAVCurrentLocationLONG = mo.getFAVCurrentLocationLONG();

         Log.i("helloLAT",""+List_FAVCurrentLocationLAT); //OK

         Log.i("helloLONG",""+List_FAVCurrentLocationLONG); //OK

    // This section writes the favorite locations seperately to the log. 

     }

    return data;

}


沧海一幻觉
浏览 118回答 1
1回答

慕容森

如果我理解正确:该listFavoriteLocation方法正确地从数据库中检索您期望的数据。如果您查看其余代码,您会发现您正在迭代数据列表并用它们一个接一个地覆盖您的实例变量,直到列表被完全迭代,这意味着您离开方法后,只会保留实例中的最后一个元素。因此,需要明确的是,以下块将正确记录每个元素,但只有最后一个元素的值将保留在您正在使用的两个实例变量中(FAVCurrentLocationLAT和FavCurrentLocationLong):for (DataModel mo:data ) {&nbsp; &nbsp; this.List_FAVCurrentLocationLAT = mo.getFAVCurrentLocationLAT();&nbsp; &nbsp; this.List_FAVCurrentLocationLONG = mo.getFAVCurrentLocationLONG();&nbsp; &nbsp; Log.i("helloLAT",""+List_FAVCurrentLocationLAT); //OK&nbsp; &nbsp; Log.i("helloLONG",""+List_FAVCurrentLocationLONG); //OK&nbsp; &nbsp; // This section writes the favorite locations seperately to the log.&nbsp;}您需要做的是使用方法data中加载的返回列表listFavoriteLocation,然后根据需要在以下代码中对其进行操作。因此,例如:List<DataModel> data = listFavoriteLocation();for (int i = 0; i < data.size(); i++) {&nbsp; &nbsp; DataModel dataModel = data.get(i);&nbsp; &nbsp; log.i("Data model "+i+": "+dataModel);&nbsp; &nbsp; // Do work on each data model element here}
随时随地看视频慕课网APP

相关分类

Java
我要回答