3

スピナーを使用してリストビューにデータを挿入し、必要な年を選択して、選択した日付に基づいてデータを視覚化します。ここで、データを月ごとではなく、年ごとにグループ化したいと考えています。何を変更すればよいですか?これはコードです:

private void showDetails(String anno){
    SQLiteDatabase db = new BilancioHelper(this).getReadableDatabase();
    final List<Dettaglio> dettagli = new ArrayList<Elenco_cat_entrate.Dettaglio>();

    for (int i=1; i<=12; i++){
        String mese;
        if (i<10){
            mese = "0"+i;
        } else {
            mese = ""+i;
        }
        String sql ="SELECT Categoria, SUM(Entrata) FROM Giornate WHERE entrata>0 AND data LIKE '"+anno+"-%' GROUP BY Categoria";
        Cursor c = db.rawQuery(sql, null);

        while (c.moveToNext()){
            Dettaglio d = new Dettaglio();

            d.categorie = c.getString(0);
            d.entrate = c.getFloat(1);


            dettagli.add(d);
        }
        c.close();
    }

    db.close();

    ListAdapter adapter = new ArrayAdapter<Dettaglio>(this, R.layout.dettaglio_categorie_entrate, R.id.tv_totale_group, dettagli){

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View row = super.getView(position, convertView, parent);


            TextView tvEntrata, tvCategoria;
            tvEntrata = (TextView) row.findViewById(R.id.tv_totale_group);

            tvCategoria = (TextView) row.findViewById(R.id.tv_categorie_group);


            Dettaglio d = dettagli.get(position);

            tvCategoria.setText(d.categorie+"");
            tvEntrata.setText(d.entrate+"");

            return row;
        }
    };

    lista.setAdapter(adapter);

}
4

1 に答える 1

2

その部分だけは避けてmeseください。%in a like 句は、任意の文字のワイルドカードです。

    String sql = "SELECT Categoria, SUM(Entrata) FROM Giornate WHERE entrata>0 AND data LIKE '"+anno+"-%' GROUP BY Categoria";

さらに、出力を並べ替えます。

    String sql = "SELECT Categoria, SUM(Entrata) FROM Giornate WHERE entrata>0 AND data LIKE '"+anno+"-%' GROUP BY Categoria ORDER BY 2 DESC";

sum(entrata)合計額が高い順に並べ替えます。または:

    String sql = "SELECT Categoria, SUM(Entrata), MIN(data) FROM Giornate WHERE entrata>0 AND data LIKE '"+anno+"-%' GROUP BY Categoria ORDER BY 3 DESC";

最新の日付を最初にして日付順に並べ替えます。

于 2013-09-10T16:35:16.843 に答える