1

これの問題を確認してください。テーブル内のすべてのレコード (3 列の 11 レコードを含む"name","address","city") を取得しようとしていますが、画面に最後に挿入されたレコードが 1 つしか表示されません。しかし、すべてのレコードを表示する必要があります。

public void readData(View v)
    {
        DatabaseClass mydb = new DatabaseClass(this);
        SQLiteDatabase readdata = mydb.getReadableDatabase();
        TextView tv = (TextView)findViewById(R.id.readtext);
        Cursor c = readdata.rawQuery("select * from mylistdata", null);
        int[] elementId = {R.id.textView1, R.id.textView2, R.id.textView3}; 
        if(c !=null)
        {
            c.moveToFirst();
            while(c.isAfterLast() == false)
            {
                listData = new ArrayList<GenericListItem>();
                String name = c.getString(c.getColumnIndex(DatabaseClass.NAME));
                String address = c.getString(c.getColumnIndex(DatabaseClass.ADDRESS));
                String city = c.getString(c.getColumnIndex(DatabaseClass.CITY));
                listData.add(new GenericListItem(new String[]{name,address,city}));
                listAdapter = new GenericListAdapter(getApplicationContext(), R.layout.list_layout, listData, elementId);
                result.setAdapter(listAdapter);
                c.moveToNext();
            }



        }
4

2 に答える 2

3

次のように、ループのlistData外側で ArrayList を初期化します。While

    c.moveToFirst();
    listData = new ArrayList<GenericListItem>();
    while(c.isAfterLast() == false)
    {
       // add value here to listData
      c.moveToNext();
    }
   // set  listData datasource to GenericListAdapter here

   listAdapter = new GenericListAdapter(getApplicationContext(), 
              R.layout.list_layout, listData, elementId);

   result.setAdapter(listAdapter);
于 2013-01-11T06:15:32.467 に答える
2

ループのたびにリストを再作成していることが問題のようです。これを試して:

listData = new ArrayList<GenericListItem>();  //moved out of loop

 while(c.isAfterLast() == false)
        {
            String name = c.getString(c.getColumnIndex(DatabaseClass.NAME));
            String address = c.getString(c.getColumnIndex(DatabaseClass.ADDRESS));
            String city = c.getString(c.getColumnIndex(DatabaseClass.CITY));
            listData.add(new GenericListItem(new String[]{name,address,city}));
            listAdapter = new GenericListAdapter(getApplicationContext(), R.layout.list_layout, listData, elementId);
            c.moveToNext();
        }

        result.setAdapter(listAdapter);  // moved out of loop
于 2013-01-11T06:16:26.417 に答える