Group by query zeigt einige unerwartete Ergebnisse in der Listenansicht android

Ich habe eine Listenansicht, in der empfangene Nachrichten von Kontaktnummern angezeigt werden. Nun war das Problem, dass wenn ich 5 Nachrichten von "1234567" und 3 Nachrichten von "56789" erhielt, meine Hauptlistenansicht 8 Nachrichten zeigte, obwohl ich nur 1 1 Nachricht mit diesen beiden Nummern in meiner Hauptlistenansicht anzeigen wollte, ähnlich wie bei SMS-Apps Als Threads und auf Artikelklick sollten verbleibende Nachrichten für diese bestimmte Nummer angezeigt werden. Jemand hat mir geantwortet, dass ich die Abfrage "Nach Telefonnummer gruppieren" verwenden soll, um die Ergebnisse nach Telefonnummer abzufragen. Wenn irgendwelche SMS empfangen wurden, speicherte ich sie in einer Tabelle mit dem Namen "smss". Dies ist mein Code beim Abrufen von Daten aus der Datenbank:

public ArrayList<Sms> fetchScreenedSms() {
  Sms a = new Sms();
ArrayList<Sms> smsInbox = new ArrayList<Sms>();
String query_fetchSMS = "select * from " + "smss" +  " group by " + "contactnumber" + "\"" ;
DBtableforNotSpam smsD = new DBtableforNotSpam(this);
SQLiteDatabase dbw = smsD.getWritableDatabase();
Cursor cursor = dbw.rawQuery(query_fetchSMS, null);
if (cursor != null) {
  cursor.moveToLast();
  if (cursor.getCount() > 0) {

    do {

      Sms message = new Sms();
      message.id = cursor.getInt(cursor
          .getColumnIndex("id"));
      message.messageNumber = cursor.getString(cursor
          .getColumnIndex("contactnumber"));
      message.messageSender = cursor.getString(cursor
          .getColumnIndex("contactname"));
      message.messageContent = cursor.getString(cursor
          .getColumnIndex("message"));
      message.setDate(cursor.getString(cursor
          .getColumnIndex("date")));
      smsInbox.add(message);
    } while (cursor.moveToPrevious());
  } else {
     empty.setVisibility(View.VISIBLE);
    }

dies ist mein Code zum Speichern von SMS in der Datenbank:

public void screenMessagee(Context context, String msg_from, String msgSender,
    String msgBody, String msgDate) {
    DBtableforNotSpam smsdb = new DBtableforNotSpam(context);
    SQLiteDatabase dbw = smsdb.getWritableDatabase();

    String query_insertSMS = "insert into " + "smss" + "(" + "contactnumber" + "," + "contactname" + "," + "message"
        + "," + "date" + ") values (\"" + msg_from.toString() + "\", \"" + msgSender + "\",\"" + msgBody
        + "\",\"" + msgDate + "\")";

    dbw.execSQL(query_insertSMS);
    smsdb.close();
    dbw.close();
    abortBroadcast();

  }

Nun habe ich Group-by-Query in der von jemandem vorgeschlagenen fetchScreenSms-Methode angewendet, aber wenn dies angewendet wird, zeigt die Listenansicht nichts, d. H. Leere Listenansichtsdaten:

String query_fetchSMS = "select * from " + "smss" +  " group by " + "contactnumber" + " = \"" + "\"" ;

Dies wird von jemandem vorgeschlagen, zeigt aber nichts in der Listenansicht an. Wenn ich dies anwende, werden in der Listenansicht Daten zu dieser Nummer angezeigt.

String query_fetchSMS = "select * from " + "smss" +  " group by " + "contactnumber" + " = \"" + "1234567" + "\"" ;

Nach dieser Abfrage zeigt mir die Listenansicht eine Nachricht von dieser Nummer in meiner Hauptlistenansicht und dann 5 Nachrichten in dieser. Das ist genau das, was ich will. Aber warum funktioniert die obere Abfrage nicht? Ich möchte beide nummern anzeigen nachrichten

Was und wo tritt das Problem auf? Keine Ergebnisse anzeigen, wenn einfache Gruppierung nach Abfrage verwendet wird, aber Ergebnisse anzeigen, wenn ich die Nummer in Gruppierung nach angabe. Jemand bitte helfen, ich stecke fest

Antworten auf die Frage(4)

Ihre Antwort auf die Frage