0

君の力が必要。SQLiteデータベースに接続するExternalDbOpenHelperクラスがあります。接続に成功しました。私のアクティビティでは、4列のデータを選択し、それをListViewに入力します。fillFields()メソッドでSimpleCursorAdapterを使用します。しかし、デバイスには空のフィールドしか表示されません。ただし、デバイスのフィールドの数は、データベースの行の数と同じです。私の間違いはどこにあるのか教えてください。ListViewにデータを入力するには、ArrayListまたはその他のコンテナーを使用する必要がありますか?

    public class IdevOwnSqliteDbActivity extends Activity {
      private static final String DB_NAME = "SergBase.db";
      final String LOG_TAG = "myLogs";
     private SQLiteDatabase database;
     private ListView listView;
     private ArrayList<String> fields;
      String sqlQuery = "select orders_products.products_id as   _id,orders_products.products_name as Name,orders_products.final_price as FinalPrice,    orders_status_history.date_added as Date"
        + " " +"from orders_products"
        + " "+"inner join orders_status_history"
        + " "+"where orders_products.orders_id=orders_status_history.orders_id";    
   public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    listView = (ListView)findViewById(R.id.list);
    ExternalDbOpenHelper dbOpenHelper = new ExternalDbOpenHelper(this, DB_NAME);
    database = dbOpenHelper.openDataBase();
    fillFields();
}
    private void fillFields() {

    //list = new ArrayList<DataContainer>();
    Cursor fieldsCursor = database.rawQuery(sqlQuery, null);
    Log.d(LOG_TAG, "Hello world!" );
    Log.d(LOG_TAG, fieldsCursor.getColumnName(3) );

    fieldsCursor.moveToFirst();
    if(!fieldsCursor.isAfterLast()) {
        do {
            String name = fieldsCursor.getString(1);
            fields.add(name);

        } while (fieldsCursor.moveToNext());

    }
    String[] columns= new String[] {fieldsCursor.getColumnName(0), fieldsCursor.getColumnName(1), fieldsCursor.getColumnName(2),fieldsCursor.getColumnName(3)};
    int[] to = new int[]{R.id.ProductID,R.id.ProductName,R.id.FinalPrice, R.id.Date};
    startManagingCursor(fieldsCursor);
     SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,android.R.layout.simple_list_item_1, 
              fieldsCursor, 
              columns, 
              to);
    System.out.println(fieldsCursor.getColumnName(2));
    listView.setAdapter(adapter);

}

4

0 に答える 0