InboxStyle Android: Notifiche a Lista con Esempi Java

Se stai cercando come implementare InboxStyle notifiche Android in modo semplice ed efficace, questa guida fa per te. Vedremo che cos’è questo stile di notifica, quando usarlo e come ti aiuta a mostrare più messaggi raggruppati in un’unica notifica chiara e leggibile. L’esempio completo è realizzato in Java utilizzando Android Studio, così potrai integrare subito il codice nel tuo progetto. Continua a leggere per scoprire passo passo come configurare e personalizzare le tue notifiche in stile Inbox.
In questa guida su InboxStyle Android scoprirai come gestire notifiche a lista con più righe di testo, ideali per mostrare conversazioni, email o aggiornamenti raggruppati in modo chiaro nella barra delle notifiche. Vedremo quando conviene usare InboxStyle rispetto alle notifiche standard, come funziona NotificationCompat.InboxStyle e come implementarlo passo dopo passo in Java, partendo da un semplice esempio pratico con activity_main.xml e MainActivity.java.
Cos’è InboxStyle Android per le notifiche
NotificationCompat.InboxStyle è uno stile di notifica avanzato fornito dalla libreria androidx.core.app che permette di mostrare più righe di testo all’interno della stessa notifica. Ogni riga viene aggiunta tramite il metodo addLine(), fino a un massimo di 6 linee visualizzate nella parte espansa della notifica. Questo stile è particolarmente utile quando vuoi dare una panoramica sintetica di più messaggi senza inviare decine di notifiche separate.
In pratica, invece di mostrare solo un titolo e un testo breve, con InboxStyle puoi espandere la notifica e vedere un elenco di messaggi (ad esempio, gli ultimi messaggi di una chat o le ultime email ricevute). L’oggetto InboxStyle viene passato al builder della notifica tramite setStyle().
Quando usare InboxStyle per le notifiche Android
Usa NotificationCompat.InboxStyle quando devi mostrare più contenuti correlati all’interno di una sola notifica. Alcuni casi d’uso tipici:
- App di messaggistica: mostrare gli ultimi messaggi di una conversazione o di più conversazioni.
- Client email: visualizzare in anteprima oggetto e mittente delle ultime email arrivate.
- App di progetto o task management: elencare attività completate, assegnate o in scadenza.
- App di notizie o feed: mostrare titoli delle ultime notizie in un solo blocco.
InboxStyle è particolarmente efficace quando vuoi ridurre il rumore nelle notifiche e allo stesso tempo dare all’utente abbastanza contesto per decidere se aprire l’app. Se ti basta una singola riga di testo estesa, potrebbe essere più adatto BigTextStyle, mentre se devi mostrare un’immagine grande dovresti valutare BigPictureStyle.
Layout activity_main.xml
Partiamo dal layout minimale dell’activity: un semplice pulsante che quando cliccato mostrerà la notifica InboxStyle. Di seguito il codice completo di activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Inbox Style" />
</LinearLayout>
MainActivity.java completo
Ora vediamo la classe MainActivity completa in Java, che gestisce la creazione del canale di notifica (da Android 8.0 in poi), la configurazione del NotificationCompat.Builder e la chiamata al metodo che imposta lo stile InboxStyle.
package com.example.notification.activities;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NotificationCompat;
import com.example.notification.R;
public class MainActivity extends AppCompatActivity {
Button button;
String CHANNEL_ID = "notification";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = findViewById(R.id.btn);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
notification();
}
});
}
private void notification() {
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Intent intent = new Intent(MainActivity.this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(
MainActivity.this,
0,
intent,
0
);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel notificationChannel = new NotificationChannel(
CHANNEL_ID,
"Notification",
NotificationManager.IMPORTANCE_MAX
);
notificationManager.createNotificationChannel(notificationChannel);
}
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID);
builder.setAutoCancel(true)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("6 messages");
method(builder);
builder.setContentIntent(pendingIntent);
notificationManager.notify(0, builder.build());
}
private void method(NotificationCompat.Builder builder) {
builder.setStyle(new NotificationCompat.InboxStyle()
.addLine("Message 1")
.addLine("Message 2")
.addLine("Message 3")
.addLine("Message 4")
.addLine("Message 5")
.addLine("Message 6")
.setSummaryText("+ 6"));
}
}
Metodo method() per notifiche InboxStyle Android
Il cuore dell’implementazione InboxStyle è il metodo method(), che riceve un NotificationCompat.Builder già configurato e applica lo stile InboxStyle aggiungendo le singole righe con addLine() e un testo di riepilogo con setSummaryText():
private void method(NotificationCompat.Builder builder) {
builder.setStyle(new NotificationCompat.InboxStyle()
.addLine("Message 1")
.addLine("Message 2")
.addLine("Message 3")
.addLine("Message 4")
.addLine("Message 5")
.addLine("Message 6")
.setSummaryText("+ 6"));
}
In un caso reale, invece di stringhe statiche potresti generare dinamicamente le righe a partire da una lista di messaggi (ad esempio recuperati da un database locale o da un server remoto) e costruire il testo di riepilogo in base al numero totale di elementi non letti.
Metodi principali di InboxStyle per notifiche Android
Qui sotto trovi una tabella riassuntiva dei metodi principali utilizzati nell’esempio InboxStyle e di quelli strettamente collegati alla gestione delle notifiche in Android:
| Metodo / Classe | Descrizione | Dove si usa |
|---|---|---|
addLine() | Aggiunge una singola riga di testo alla notifica in stile Inbox, fino a un massimo di 6 righe visibili. | All’interno di NotificationCompat.InboxStyle nel metodo method(). |
setSummaryText() | Imposta il testo di riepilogo mostrato sotto la lista di righe (es. numero di messaggi totali). | Sempre su NotificationCompat.InboxStyle, dopo le chiamate a addLine(). |
setBigContentTitle() | Imposta il titolo mostrato quando la notifica è espansa in stile Inbox. | Su un’istanza di NotificationCompat.InboxStyle, ad esempio: new InboxStyle().setBigContentTitle(...). |
NotificationChannel | Classe che rappresenta un canale di notifica richiesto da Android 8.0 (API 26) in poi. | Nella creazione del canale, prima di inviare la notifica, dentro il blocco if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O). |
setStyle() | Applica lo stile (ad esempio InboxStyle) a un oggetto NotificationCompat.Builder. | Sul builder della notifica: builder.setStyle(new NotificationCompat.InboxStyle() ...). |
Conclusioni e articoli correlati
InboxStyle è una soluzione semplice ma potente per migliorare l’esperienza utente nelle tue app Android quando devi mostrare più informazioni all’interno di una singola notifica. Usando NotificationCompat.InboxStyle, addLine(), setSummaryText() e i canali di notifica puoi ottenere notifiche molto più chiare, soprattutto in applicazioni di messaggistica, email o gestione attività.