2016-06-24 3 views
0

Ich möchte die SMS aus dem Posteingang lesen und sie in einer Listenansicht mit wenigen SMS-Inhaltsanbieter wie ID, Absender-Nummer, Körper, Zeit anzeigen. Rite jetzt Ich kann die SMS lesen und in der Listenansicht nur den Text der SMS anzeigen, aber auch andere Felder anzeigen. Ich verwende Android Studio für die App-Entwicklung.
Hier ist ein Code, der ich kann zeigt den Körper von SMS in Listviewwie SMS-Inhaltsanbieter angezeigt werden?

ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, android.R.id.text1, messageArray); 
     lv.setAdapter(adapter); 
     lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

      } 
     }); 

public ArrayList<String> readAllData() { 
ArrayList<String> sms = new ArrayList<>(); 
Uri us = Uri.parse("content://sms/inbox"); 
cr = getContentResolver().query(us, null, null, null, null); 
String body = cr.getString(cr.getColumnIndexOrThrow("body")); 
sms.add(body); 
return sms; 
} 

Ich wollte Sms-ID, Name des Absenders und die Uhrzeit angezeigt werden soll. Bitte kann mir jemand helfen ...

Antwort

0

Um mehrere Informationen in der ListView anzuzeigen. Für Anfänger, versuchen mit CustomAdapter für die Listenansicht zu lernen, finden Sie folgenden Artikel:

Custom Adapter for List View

Wenn Sie es tiefer zu verstehen, versuchen Sie mit „neue Version“ der Listenansicht zu arbeiten, ist RecyclerView: http://www.androidhive.info/2016/01/android-working-with-recycler-view/

Sie können auch viele Tutorials auf Youtube mit Stichwort "benutzerdefinierte Listenansicht in Android" leicht finden

Ich denke, das ist hilfreich für Sie!

+0

Vielen Dank für Ihre Antwort sicher, ich werde es überprüfen @Huy – Prathik

0

Zuerst müssen Sie wissen, welche Spalten Sie bezüglich einer SMS haben. Vikas Paditar aufgelistet sie in diesem Beitrag (als beste Antwort markiert): https://stackoverflow.com/a/4023737/3953199

Als nächstes müssen Sie die Spaltennamen in der getColumnIndexOrThrow(String column) -Methode verwenden, wie es in diesem Beitrag (auch beste Antwort) von qiuping345 Geographie: https://stackoverflow.com/a/5570463/3953199

Hier ist ein Ausschnitt aus dem zweiten Link:

  SmsRep singleSms = new SmsRep(); 
      singleSms.id = cursor.getInt(cursor.getColumnIndexOrThrow("_id")); 
      singleSms.address = cursor.getString(cursor.getColumnIndexOrThrow("address")); 
      singleSms.timestamp = cursor.getLong(cursor.getColumnIndexOrThrow("date"))/1000; //### the sent time 
      singleSms.type = cursor.getInt(cursor.getColumnIndexOrThrow("type")); 
      singleSms.protocol = cursor.getInt(cursor.getColumnIndexOrThrow("protocol")); 

Grundsätzlich Sie verschiedene Spalten in Bezug auf eine SMS haben, die eine Vielzahl von Informationen bietet.

+0

Ich denke, sein Problem ist es, eine benutzerdefinierte Listenansicht zu erstellen :) – alway5dotcom

+0

Ich denke, ich muss hier @HuyN widersprechen. Er schrieb "aber auch andere Felder anzeigen zu müssen" und "Ich wollte Sms-ID, Sendername und Uhrzeit anzeigen." So sieht es für mich aus, dass er wirklich weitere SMS-Informationen möchte. – KJaeg

+0

eigentlich muss ich alle diese Felder in der gleichen Spalte nach jeder SMS anzeigen. – Prathik