Ich erstelle Android-App, wo Benutzer einige Quittungen und Protokolle eingibt. Beziehung ist: Empfang has_many Logs.Android - SQL-Abfrage für group_by Artikel
Hier sind mein Beleg und Protokoll-Modell.
Hier ist meine Tätigkeit, wo ich versuche, dies aber erfolglos zu erreichen.
public class LogsRecapitulation extends AppCompatActivity {
private ListView mainListView;
private BaseAdapter listAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_listview);
mainListView = (ListView) findViewById(R.id.ListViewItem);
//recieve RecepitID in displayLogs.activity
final long forwardedId = (long) getIntent().getExtras().get(String.valueOf("recepitID"));
List<Logs> logsList = new Select().from(Logs.class).where("Receipt = " + forwardedId).groupBy("SortID").execute(); // I grouped Logs by sortId in this line.
listAdapter = new RecapitulationArrayAdapter(logsList);
mainListView.setAdapter(listAdapter);
}
private class RecapitulationArrayAdapter extends BaseAdapter {
private LayoutInflater inflater;
private List<Logs> logsList;
public RecapitulationArrayAdapter(List<Logs> logsList) {
inflater = LayoutInflater.from(LogsRecapitulation.this);
this.logsList = logsList;
}
@Override
public int getCount() {
return logsList.size();
}
@Override
public Object getItem(int position) {
return logsList.get(position);
}
@Override
public long getItemId(int position) {
return logsList.get(position).getId();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.logs_recapitulation, parent, false);
}
Logs log = logsList.get(position);
((TextView) convertView.findViewById(R.id.rec_log_sort)).setText(log.sort_id);
((TextView) convertView.findViewById(R.id.rec_log_class)).setText(log.grade);
((TextView) convertView.findViewById(R.id.rec_log_count)).setText(String.valueOf(logsList.size()));
((TextView) convertView.findViewById(R.id.rec_logs_mass)).setText(String.format("%.2f m3", log.getM3()));
if (log.receipt.priceType.equals("Na panju")) {
((TextView) convertView.findViewById(R.id.rec_log_price_default)).setText(String.valueOf(log.price.stumpPrice_kn));
} else {
((TextView) convertView.findViewById(R.id.rec_log_price_default)).setText(String.valueOf(log.price.roadPrice_kn));
}
if (log.receipt.priceType.equals("Na panju")) {
((TextView) convertView.findViewById(R.id.rec_calculated_price)).setText(String.format("%.2f KN", log.price.stumpPrice_kn * log.getM3()));
} else {
((TextView) convertView.findViewById(R.id.rec_calculated_price)).setText(String.format("%.2f KN", log.price.roadPrice_kn * log.getM3()));
}
return convertView;
}
}
}
Also, was ich bisher getan ist, dass ich Anzeige von Protokollen von SortID in diesem BaseAdapter, aber in jeder Art ist es mir zeigen nur letzte Protokoll hinzugefügt und es ist Daten.
Jetzt muss ich Daten anzeigen, wie es auf Bild unten ist - Teil wo REKAPITULAT ist. Dort brauche ich eine Gruppierung nach Sortier-ID und dann muss ich sie in jeder Gruppe nach Klassen gruppieren.
Zum Beispiel wenn ich wie auf Bild sortiere 1 mit 4 Protokollen, 2 jeder Klasse (A, B) dann muss es wie auf Bild anzuzeigen.
Ich bin hier fest und ich wäre sehr dankbar, wenn jemand weiß, wie es geht und ist bereit zu helfen.
Frage: Wie sql Abfrage erstellen oder meinen Code zu beheben, um Daten anzuzeigen, wie es auf Bild oben ist?
Welchen Persistenz-Framework verwenden Sie? – JimmyB
'SELECT SortierungID, Note, Summe (Masse), Summe (Preis) VON ... GROUP BY SortID, Grad' – JimmyB
Was meinst du mit" Masse "? Ich sehe kein Feld mit diesem Namen. – JimmyB