0

データベースからすべてのデータを取得して hasmap の arraylist に入れようとしましたが、テーブルの最後のレコードしか取得できません。ここに私のコードがあります:

databaseAirport myDbHelper = new databaseAirport(this);
myDbHelper.open();
Cursor c = myDbHelper.selectAll();
HashMap<String, String> map = new HashMap<String, String>();
ArrayList<HashMap<String, String>> dataList = new ArrayList<HashMap<String,String>>();
if(c!=null && c.moveToFirst())
        {
                do
            {
                map.put(KEY_ACODE, c.getString(5).toString());
                map.put(KEY_FNUM, c.getString(6).toString());
                map.put(KEY_STOP_1, c.getString(8).toString());
                map.put(KEY_FTIME, c.getString(7).toString());
                map.put(KEY_REMARK, c.getString(10).toString());
                map.put(KEY_REM_COM, c.getString(11).toString());
                dataList.add(map);
            }while(c.moveToNext());
        }

最後に、私の dataList(map) は最後のレコードのみを取得します...

誰でも私を助けてくれませんか..

4

2 に答える 2

1

この行を次のように移動します。HashMap<String, String> map = new HashMap<String, String>();

databaseAirport myDbHelper = new databaseAirport(this);
myDbHelper.open();

Cursor c = myDbHelper.selectAll();
HashMap<String, String> map;
ArrayList<HashMap<String, String>> dataList = new ArrayList<HashMap<String,String>>();
if(c!=null ){
     c.moveToFirst();

             while(  cur.isAfterLast() == false )
            {
                map = new HashMap<String, String>(); // <---- moved here

                map.put(KEY_ACODE, c.getString(5).toString());
                map.put(KEY_FNUM, c.getString(6).toString());
                map.put(KEY_STOP_1, c.getString(8).toString());
                map.put(KEY_FTIME, c.getString(7).toString());
                map.put(KEY_REMARK, c.getString(10).toString());
                map.put(KEY_REM_COM, c.getString(11).toString());
                dataList.add(map);
                c.moveToNext();
            }
        }
于 2012-10-25T06:32:22.277 に答える
1

このようにコードを変更します

databaseAirport myDbHelper = new databaseAirport(this);
myDbHelper.open();
Cursor c = myDbHelper.selectAll();
ArrayList<HashMap<String, String>> dataList = new ArrayList<HashMap<String,String>>();
while(c.moveToNext());
{
     HashMap<String, String> map = new HashMap<String, String>();
     map.put(KEY_ACODE, c.getString(5).toString());
     map.put(KEY_FNUM, c.getString(6).toString());
     map.put(KEY_STOP_1, c.getString(8).toString());
     map.put(KEY_FTIME, c.getString(7).toString());
     map.put(KEY_REMARK, c.getString(10).toString());
     map.put(KEY_REM_COM, c.getString(11).toString());
     dataList.add(map);
}
于 2012-10-25T06:34:23.150 に答える