Autore Topic: Inserire banner pubblicitario in una listView  (Letto 435 volte)

Offline bakiko

  • Utente junior
  • **
  • Post: 74
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC One
  • Sistema operativo:
    Windows 7
Inserire banner pubblicitario in una listView
« il: 05 Settembre 2013, 19:39:09 CEST »
0
Salve ragazzi, volevo porvi un quesito.Vorrei creare una listView (formata da String e un ImageView) e mettere un piccolo banner pubblicitario (dovrebbe comparire in alto alla listView).
Questo è il main activity:
Codice (Java): [Seleziona]
public class ActivityNotizia extends ListActivity {

         String uri;        

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                Intent intent=getIntent();
                Bundle bundle=intent.getExtras();
                uri=bundle.getString("uri");
                AdView adView = (AdView) this.findViewById(R.id.adView);
                adView.loadAd(new AdRequest());
        }
}

Mentre questo è il relativo file xml:

Codice (Java): [Seleziona]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="80dip"
    android:background="@drawable/provabutton"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin">

    <com.google.ads.AdView
        xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
        android:id="@+id/adView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        ads:adSize="SMART_BANNER"
        ads:adUnitId="xxx-xxxxx-xxxxxxx"
        ads:loadAdOnCreate="true"
         />

        <TextView
            android:id="@+id/data"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />

        <TextView
            android:id="@+id/titoloNotizia"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textSize="14sp"
            android:textStyle="bold" />
    </LinearLayout>

</LinearLayout>
Ovviamente l'app mi va subito in crash senza visualizzare l'activity.
Ringrazio a tutti per l'aiuto
« Ultima modifica: 05 Settembre 2013, 19:43:19 CEST da bakiko »

Offline elfo83

  • Utente normale
  • ***
  • Post: 283
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Re:Inserire banner pubblicitario in una listView
« Risposta #1 il: 05 Settembre 2013, 20:51:53 CEST »
0
Pubblica il logcat

Offline matttt

Re:Inserire banner pubblicitario in una listView
« Risposta #2 il: 06 Settembre 2013, 08:53:53 CEST »
0
Salve ragazzi, volevo porvi un quesito.Vorrei creare una listView (formata da String e un ImageView) e mettere un piccolo banner pubblicitario (dovrebbe comparire in alto alla listView).
Potresti estendere una normale activity e poi definire il layout xml con un RelativeLayout con il banner attaccato al bordo inferiore e un ListView che riempie il resto dello spazio attaccato sopra il banner.
Le mie apps su Google Play Store:

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:Inserire banner pubblicitario in una listView
« Risposta #3 il: 06 Settembre 2013, 09:53:40 CEST »
0
Sempre allegare il logcat, dire solo "va subito in crash" non significa nulla e apre solo la strada a congetture che possono anche rivelarsi sbagliate. Il logcat invece non mente mai.

Parlando di congetture:
Codice (Java): [Seleziona]
       @Override
        protected void onCreate(Bundle savedInstanceState) {
               super.onCreate(savedInstanceState);

               // dov'è il setContentView che gli dice che layout custom usare?

               Intent intent=getIntent();
               Bundle bundle=intent.getExtras();
               uri=bundle.getString("uri");
               AdView adView = (AdView) this.findViewById(R.id.adView); // il layout di default di ListActivity non ha nessuna view con id "adView", questa findViewById tornerà sempre null
               adView.loadAd(new AdRequest()); // BOOOM! NullPointerException garantita
               // ...

Per il resto seguirei il suggerimento di matttt, nemmeno io mi sono mai trovato a mio agio con la ListActivity quando si inizia a customizzarla aggiungendo componenti.
« Ultima modifica: 06 Settembre 2013, 09:56:18 CEST da Sakazaki »

Offline bakiko

  • Utente junior
  • **
  • Post: 74
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC One
  • Sistema operativo:
    Windows 7
Re:Inserire banner pubblicitario in una listView
« Risposta #4 il: 13 Settembre 2013, 00:03:18 CEST »
0
Sempre allegare il logcat, dire solo "va subito in crash" non significa nulla e apre solo la strada a congetture che possono anche rivelarsi sbagliate. Il logcat invece non mente mai.

Parlando di congetture:
Codice (Java): [Seleziona]
       @Override
        protected void onCreate(Bundle savedInstanceState) {
               super.onCreate(savedInstanceState);

               // dov'è il setContentView che gli dice che layout custom usare?

               Intent intent=getIntent();
               Bundle bundle=intent.getExtras();
               uri=bundle.getString("uri");
               AdView adView = (AdView) this.findViewById(R.id.adView); // il layout di default di ListActivity non ha nessuna view con id "adView", questa findViewById tornerà sempre null
               adView.loadAd(new AdRequest()); // BOOOM! NullPointerException garantita
               // ...

Per il resto seguirei il suggerimento di matttt, nemmeno io mi sono mai trovato a mio agio con la ListActivity quando si inizia a customizzarla aggiungendo componenti.

Chiedo scusa, avete perfettamente ragione posto subito il logcat.(Il setContentView è stata una mia dimenticanza nell'inserire il codice):
Codice: [Seleziona]
09-13 00:01:23.291: E/AndroidRuntime(4240): FATAL EXCEPTION: main
09-13 00:01:23.291: E/AndroidRuntime(4240): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.calcio.it.ActivityNotizia}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
09-13 00:01:23.291: E/AndroidRuntime(4240):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java)
09-13 00:01:23.291: E/AndroidRuntime(4240):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java)
09-13 00:01:23.291: E/AndroidRuntime(4240):         at android.app.ActivityThread.access$600(ActivityThread.java)
09-13 00:01:23.291: E/AndroidRuntime(4240):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java)
09-13 00:01:23.291: E/AndroidRuntime(4240):         at android.os.Handler.dispatchMessage(Handler.java)
09-13 00:01:23.291: E/AndroidRuntime(4240):         at android.os.Looper.loop(Looper.java)
09-13 00:01:23.291: E/AndroidRuntime(4240):         at android.app.ActivityThread.main(ActivityThread.java)
09-13 00:01:23.291: E/AndroidRuntime(4240):         at java.lang.reflect.Method.invokeNative(Native Method)



Potresti estendere una normale activity e poi definire il layout xml con un RelativeLayout con il banner attaccato al bordo inferiore e un ListView che riempie il resto dello spazio attaccato sopra il banner.
Ti ringrazio, cercherò di seguire i tuoi consigli.Io pensavo che il modo più semplice per fare una listView era quello di estendere la listActivity.