0

次のコードは、表示アクティビティのテキスト ビューにエントリを出力するための文字列を返しますが、すべてのエントリを一度に送信することでそれを行うため、一度に 1 つずつ処理することはできません。

これは、データを返すためにデータベースで使用される関数です。

public String getData() {

        String[] columns = new String[] { KEY_ROWID, KEY_NAME, KEY_DATE,
                KEY_MONTH, KEY_YEAR };

        Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null,
                null, null);        
            String result = "";

        // int iRow = c.getColumnIndex(KEY_ROWID);  
        int iName = c.getColumnIndex(KEY_NAME);     
        int iDate = c.getColumnIndex(KEY_DATE);     
        int iMonth = c.getColumnIndex(KEY_MONTH);   
        int iYear = c.getColumnIndex(KEY_YEAR);     
        for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) 
            {             
            result = result + " " + c.getString(iName) + "\t\t"
         + c.getString(iDate) + "\t\t" + c.getString(iMonth)+ "\t\t" + c.getString(iYear) + "\n";

        }       
           return result;   
           }

これは、テキスト ビューでエントリを出力するクラスです。

    public class DBView extends Activity {

        TextView tv;

        @Override   
            protected void onCreate(Bundle savedInstanceState) {   
            super.onCreate(savedInstanceState);         
            setContentView(R.layout.dbview);

            tv = (TextView) findViewById(R.id.SQLinfo); 
            DataBaseClass info = new DataBaseClass(this);       
            info.open();        
            String data = info.getData();       
            info.close();       
            tv.setText(data);

           }

       }

私がやろうとしているのは、データベース内のエントリ数に応じてリスト ビューを作成することです。たとえば、エントリが 1 つしかない場合、名前、日付、月、年を含むリスト項目が 1 つだけ生成されます。文字列アダプターとリスト アダプターを使用してみましたが、動作しませんでした。

4

2 に答える 2

0

コードはデータベースの最後のエントリのみを返します (カーソルをループしても、最後の結果が返されます)。代わりにSimpleCursorAdapter(列を指定TextViewsし、列から入力する) を使用できます。このサンプルを確認してください:

    String[] columns = new String[] { KEY_ROWID, KEY_NAME, KEY_DATE,
            KEY_MONTH, KEY_YEAR };

    Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null,
            null, null);        
        String result = "";

SimpleCursorAdapter adap=new SimpleCursorAdapter (getApplicationContext, /*create layout with 4 TextViews*/, c, new String[] { KEY_ROWID, KEY_NAME, KEY_DATE,
            KEY_MONTH, KEY_YEAR }, int[] /*ids of the 5 TextViews from the layout part in an int[]*/);

次にListView、データを表示する を作成します。

ListView lv=(ListView) findViewById(/*ListView id in your main layout*/);
lv.setAdapter(adap);
于 2013-06-16T12:42:30.073 に答える