Posts by 3ncrypt0

    Ein Wunder ist geschehen :D


    Mein einziges Problem lag darin, dass ich in dem WeatherAdapter abfrage:


    Code
    if(row == null)



    Wenn das zweite Banner ausgegeben wurde, ist das nachfolgende RowItem aber nicht null, sondern eine Instance einer AdView...


    mit


    Code
    if(row == null || row instaceof AdView)



    Kann ich die Row neu instanziieren und auch auf diese Zugreifen und einen Wert aus meinem Array hinzufügen.


    Dadurch, dass ich zwei Adapter verwende, brauche ich mir keine Gedanken mehr machen beim Abfragen des ListItemIndex in der setOnItemClickListener und es gibt beim scrollen kein Problem...super!


    Nochmal besten Dank an Lucas de Vil, ohne Deine Hilfe hätte ich wohl noch Jahre gebraucht :D


    DANKE!


    Grüße

    Guten morgen!


    @Lucas de Vil: Sorry, ich hatte das Thema erst einmal zur Seite geschoben und nicht gesehen, dass Du noch etwas geschrieben hast.


    So, nun will ich aber endlich das Problem lösen. Bisher habe ich ja versucht, alles in einem CustomBaseAdapter zu lösen. Das gestaltet sich aber mehr als schwierig, wenn man allein schon bedenkt, wie man später an die richtigen ListItems kommt über onItemClickListener();


    In dem Beispiel aus dem Blogbeitrag übergeben die ja in dem Konstruktor eine BaseAdapter Instanz. Leider ist nirgends wirklich beschrieben,wie genau das geschehen soll. (Oder ich habe einfach Tomaten auf den Augen...)


    Ich habe nun einfach mal ein Testprojekt angelegt. Zwei CustomBaseAdapter. Im ersten Baseadapter (nachfolgend als WeahterAdapter genannt) verarbeite ich die Daten aus einem Array mit meinen normalen Items.


    Diesen WeahterAdapter übergebe ich dann an den AdmobAdapter. In dem AdmobAdapter mache ich alles genau so, wie in dem Bsp.


    Java
    return delegate.getView(position - (int) Math.ceil(position / k) - 1, convertView, parent);



    Wenn ich versuche in dem AdmobAdapter mir eine View aus dem WeatherAdapter zu holen, crashed die app...


    Hier mal ein Logauszug, wobei ich denke, ich mache schon etwas Grundlegendes falsch:




    Laut LogCat gibt er den ersten Banner auch aus bzw. lädt diesen. Nur crashed die App eben wenn ich versuche eine View aus dem anderen BaseAdapter zu bekommen.

    Servus,


    also ich bin mir nicht ganz sicher, aber bzgl. Forward- und Backward-Button kannst Du ja ganz normale Buttons nehmen. Ich würde dann halt mit ner DB zb arbeiten um die aufgerufenen URLs wegzuspeichern, so dass man diese dann auch wieder aufrufen kann beim Vor und Zurück navigieren.


    Natürlich geht das auch mit clear History und reload usw...



    Aaaaaaber, ich denke mal, dass die WebView all diese Funktionen schon mitbringt...weiss es aber auch nicht, wenn nicht, dann könnte man es so machen wie oben beschrieben. Lässt sich ja schnell umsetzen.


    Grüße


    EDIT:


    http://www.androidaspect.com/2…oid-webview-tutorial.html Guck mal, da ist es schön beschrieben...

    Nabend,


    also den Screen ausschalten, funktioniert scheinbar nur mit dem ProximitySensor, also der gleiche Effekt, wie beim telefonieren.


    Mittels


    Java
    pm = (PowerManager) getSystemService(Context.POWER_SERVICE);		wl = pm.newWakeLock(32, "Nacht");
    if (!wl.isHeld()){			wl.acquire();		}



    kann man diesen aktivieren, und schon wird der listener für den ProximitySensor gestartet und der Bildschirm schaltet sich ab, wenn man zu nah an den Sensor kommt. Über einen ButtonListener oder so, lässt sich das wohl nicht umsetzen.


    Vielleicht kann es ja jemand mal gebrauchen...


    Mehr infos: http://grepcode.com/file/repos…ger.WakeLock.release(int)


    Grüße

    Nabend zusammen,


    ich bin gerade ein wenig am verzweifeln...


    Gibt es eine Möglichkeit, das Smartphone in eine Art Schafmodus zu versetzen? Ohne den AdminModus!!!


    Mittels WakeLock funktioniert es schon einmal nicht und bei mir fruchtet es auch nicht, wenn ich die brightness runtersetze auf 0, denn da ist die Screenbeleuchtung immer noch zu ca. 30% an. Ich möchte das Handy auch nicht wirklich sperren (Wobei das auch super wäre...), sondern eher die Beleuchtung des Displays ausschalten.


    Ich habe sehr häufig nun gelesen, dass viele die display brightness auf 0 setzen und die Zeit vom DisplayStandby soweit wie möglich runter setzen, da der Ruhemodus wohl auf die brightness=0 reagiert und dann zb nach 3 Sekunden abschaltet. Das funktioniert bei mir schon einmal nicht....das Display wird nur dunkler und nein, ich habe alle Einstellungen sowie von Display und Entwicklermodus geprüft, ich sperre da nichts....und 3 Sekunden sind mir zu langsam....


    Auf der Suche nach einer Lösung bin ich auf die PocketSensor Demo App gestoßen und die setzt genau das um. Die einzigen Berechtigungen sind nur Ruhemodus deaktivieren und Keylogger deaktivieren...Ich dachte erst, dass die einfach die brightness auch auf 0 setzen und dann eine neue View in komplett schwarz und Fullscreen aufrufen, aber die schalten das Display wirklich irgendwie ab, anders kann ich mir das nicht erklären und ich würde mal gerne wissen, wie die das machen....muss ja scheinbar irgendwie gehen...


    (bzgl. Display abschalten habe ich im Entwickler Modus einfach die CPU Auslastung aktiviert, die wird dann ja überall angezeigt und dort dann nicht zb....)


    Kann mir jemand helfen bzw. kennt jemand einen Lösungsansatz?


    Danke und Grüße

    EDIT:


    Guten Morgen...


    Ich habe gestern Nacht noch ein wenig rumgesucht und ein wenig ausprobiert. Folgendes bringt mich schon einen Schritt weiter:



    Das Problem dabei ist nun, dass sich das Overlay nicht über alles drüber legt, also zb nicht über die normalen Steuerelemente von ANdroid... Ich persönlich nutze ein Samsung Galaxy Note mit der JellyBeer ROM 4.2.2 und da habe ich die normalen Steuerelemente (Home Button, Back Button, Menu Button) auch "digital".


    Wenn ich aus der App raus bin, diese aber im Hintergrund läuft und ich das Overlay aktiviere, so verschwinden alle App Icons auf dem Home Bildschirm, aber der Hintergrund ist weiter sichtbar, also es wird kein schwarzes Overlay darüber gelegt...


    Muss ich dabei irgendwas beachten? Es gibt ja zb auch diese PopUp Browser, dieser legt sich auch überall drüber...muss ja scheinbar irgendwie gehen...

    Okay,


    ich glaube ich habe es nun verstanden...zumindest funktioniert es im ersten Test...


    Java
    PowerManager pm = (PowerManager)this.context.getSystemService(Context.POWER_SERVICE);        wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP|PowerManager.SCREEN_DIM_WAKE_LOCK|PowerManager.ON_AFTER_RELEASE, "WakeUp");        wl.acquire();        wl.release();

    Guten Morgen zusammen.


    Ich hab da mal eine Frage:


    Ist es möglich, eine App zu starten bzw. wiederzubeleben, wenn das Smartphone sich im Ruhemodus befindet, also der PowerButton einmal betätigt wurde?


    Die App selber "schließe" ich mittels moveTaskToBack(true); um sie später widerzubeleben. Das Smartphone hat keinerlei Sicherheitsabfragen, wenn es sich im Ruhemodus befindet. Mit einem Wecker geht es doch eigentlich auch...stoße immer wieder auf WAKE_LOCK, allerdings kann ich damit nicht viel anfangen, steige da nicht wirklich hinter.


    Grüße

    Servus,


    ja das ist richtig...ich habe ersteinmal dafür gesorgt, dass meine Klasse von BaseAdapter erbt anstelle von ArrayList<t> damit ich auch auf die getCount() zugreifen kann.


    Das Problem tritt, so wie ich es sehe, immer bei der Abfrage



    auf. Wenn ich die Abfrage if(row == null) entferne, geht es, dann allerdings erzeugt er ja immer die Row neu, anstatt eine fertige schon zu nehmen.


    Die korrekte Anzahl der Items zzgl. der Banner habe ich mit Deiner Hilfe nun umgesetzt. Ich bin mir nicht ganz sicher, aber ich glaube, dass die in dem Bsp. von dem Blog einen extra BaseAdapter für die Anzeigen verwendet haben, die ja mittels


    Java
    return delegate.getView(position - (int) Math.ceil(position / k) - 1,
              convertView, parent);


    sich die nichtBanner holen. Das delegate wird dann wohl deren BaseAdapter sein, wo die die Daten für die normalen Items aufbauen. Ich habe das auch versucht, aber bei mir geht es nicht.


    Habe einen BannerAdapter aufgesetzt, mit dem Code aus dem Bsp. In meiner Activty eine Instanz beider Adapter erzeugt und versucht, die Instanz meines DatenAdapters in den BannerAdapter beim instanziieren zu übergeben, bekomme aber den Fehler, dass das nicht erwartet wird...warum auch immer. Leider findet man da keine kompletten Bsp. Scheinbar ist es zu einfach, als das man es erklären müsste aber ICH hänge da schon wieder...."macht langsam keine Spass mehr :D"

    Nabend!


    Ich hab vor ein paar Tagen in eine ListView mit einem CustomArrayAdapter AdMob Banner als Items eingefügt. Das Ganze funktionierte alles auch reibungslos. Nach einem kleinem Wasserschaden, kompletten zerlegtem Galaxy Note, ein wenig Alkohol und einer ROM, funktioniert das nun nicht mehr, wobei davon ausgehe, dass es Anfangs nur Glück war, dass es funktioniert hat....




    Bei diesem Code sollte nun an jeder fünften Stelle ein Banner erscheinen, was er auch tut. Aber, ich kann nun nicht mehr Scrollen, da die App mit einer NullPointerException crashed. Erwarte ich 8 ListItems, weil ich dementsprechend ein Array übergebe, so erhalte ich, bei (position % 2) nur noch 4 Items. Ich hatte darauf Anfangs nicht geachtet....


    Wie kann ich denn am besten innerhalb meines ArrayAdapters sagen, dass zb an jeder 10. Stelle ein Banner erscheinen soll, dafür aber kein ListItem einsparen? Daran wird es ja wohl liegen, dass die App beim Scrollen crashed....


    Den Code, um Banner als ListItem zu setzen habe ich von googleadsdeveloper.blogspot.de


    Dort holen die sich aber die View anstelle von normal convertView über


    Java
    getView(position - (int) Math.ceil(position / k) - 1,          convertView, parent);



    was bei mir aber auch eine NullPointerException auswirft...


    Jemand eine Idee? Stehe mal wieder auf dem Schlauch....(Immer bei den scheinbar einfachsten Sachen...)

    Moin zusammen!
    Mir ist vorhin aufgefallen, dass ich vor einem kleinem "Randproblem" stehe.
    Ich versuche mal, das Problem zu beschreiben.
    Ich habe eine FragmentActivity mit 3 Views.
    In der ersten View befindet sich eine ListView mit einem Custom ArrayAdapter in der Text ausgegeben wird. In der zweiten befindet sich auch eine ListView in der Text und ein Bild ausgegeben wird mit einem eigenen Custom ArrayAdapter und in der dritten auch eine ListView mit dem CustomArrayAdapter aus der ersten View, nur mit anderen Inhalten.
    Solange ich die View in der Reihenfolge stehen lasse, gibt es soweit keine Probleme (Außer dass sich Anfangs die Listitems immer verdoppelt haben, wenn ich zwischen der ersten und der dritten View geswipet bin, konnte das aber mittels if(adapter == null) beheben).
    Möchte ich nun aber, dass die ersten beiden View die reinen TextListView beinhalten die den selben ArrayAdapter verwenden und in der dritten dann die Anfangs zweite View, so dauert das switchen von der ersten auf die zweite View extrem lange, zumindestens was das scrollen in der zweiten angeht. Von der zweiten View zur ersten geht ganz normal. Ich habe auch schon einen eigenen ArrayAdapter (also einen dritten) erstellt, aber auch das hilft nix.
    Wie gesagt, es ist etwas schwierig zu erklären.
    Die beiden ListViews mit reinem Text sind so aufgebaut:





    Java
    private NewsListRSSItems[] createList() {
    		rssListContent = rssList.getContent();
    		NewsListRSSItems rssItems[] = new NewsListRSSItems[rssListContent.size()];
    		for (int i = 0; i < rssListContent.size(); i++) {
    			rssItems[i] = new NewsListRSSItems(rssListContent.get(i));
    		}
    		
    		return rssItems;
    	}


    Und der ArrayAdapter so:





    Es ist ja so, dass die erste View erst dann gecancelt bzw. neu aufgesetzt wird, wenn ich die dritte View aufrufe oder verlasse.


    Befinden sich die beiden Views in der ersten und der dritten View, so geht es ohne Probleme. Wobei ich mich Frage, wieso die ListView mit anderem Inhalt ohne Probleme ausgegeben wird, da sie sich ja vom Prinzip her nicht von den anderen beiden unterscheidet.


    Ich hoffe, es war halbwegs verständlich. Wie gesagt, wenn ich die "gleichen" ListViews trenne also in View 1 und 3 dann geht es. Aber ich hätte sie schon gerne nebeneinander...


    Kann mir da jemand helfen?


    Grüße

    Servus!


    Einen Schritt weiter bin ich nun dabei, Videos von YouTube innerhalb der App abzuspielen. Da das innerhalb der App geschehen soll, habe ich mir mal die YouTube API angeguckt.


    Anfangs hatte ich das Problem, dass mir die App in der View, wo der Player dargestellt werden soll, die Meldung anzeigte, dass es Probleme gibt, den YouTube Player zu initialisieren.


    Danach habe ich mal das SampleProject von der YouTube API gestartet und da hatte ich den gleichen Fehler nur dass ich noch einen Dialog bekommen habe, dass die YouTube App benötigt wird mit einem direkten Download Link.


    Hat einer von euch schon Erfahrung mit der YouTube API gemacht?


    Als ich die YouTube App heruntergeladen und installiert hab, funktionierte auch der Player...


    Nun Frage ich mich, ob man tatsächlich die App benötigt um Videos in der eigenen App abzuspielen...wäre ja nun nicht so toll....



    Vielleicht hat ja jemand eine Idee oder kennt die Lösung.


    Danke

    Hallo zusammen!


    Das Problem der Suche habe ich erst einmal gelöst, in dem ich eine neue App erstellt habe. Keine Ahnung was bei der alten falsch war bzw gefehlt hat aber nun funktioniert es erst einmal.


    Was ich nun aber suche, ist eine Art autocomplete. Also, dass man während der eingabe schon die ersten Suchergebnisse angezeigt bekommt...ist das möglich? Search suggestions habe ich schon drin, aber das sind ja nur Suchvorschläge, basierend auf schon einmal eingegebenen Suchanfragen.


    Schön währe wirklich eine Art Liste, die mir zb. während der Eingabe schon einmal unterhalb der Sucheingabe mit den Ergebnissen angezeigt wird. Natürlich müsste ich dann so etwas in der Art wie einen onChangeListener verwenden. Oder würdet ihr davon abraten und erst die Ergebnisse in der ResultActivity anzeigene lassen?


    Grüße

    Was meinst Du denn mit:


    Quote

    wird mir der eingebundene link in der WebView angezeigt. Er soll aber in einem externen Browser (funktioniert ohne setWebViewClient ) angezeigt werden.

    ?

    Servus!



    In meine App möchte ich gerne eine Suche einbauen, um den Inhalt der App zu durchsuchen. Dazu habe ich mir die Google Docu dazu angeguckt und auch ein paar Tutorials, aber bei mir funktioniert es nicht und vielleicht kann mir einer von euch helfen.
    Laut Google habe ich folgendes gemacht:
    1. Eine SearchResultActivity erstellt
    2. Unter res/xml eine searchable.xml erstellt mit dem Inhalt:

    PHP
    <?xml version="1.0" encoding="utf-8"?>
    
    
    <searchable xmlns:android="http://schemas.android.com/apk/res/android"
        	android:label="@string/app_name"
        	android:hint="..." />


    3. Unter res/menu eine options_menu.xml erstellt mit dem Inhalt:


    PHP
    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
    	<item android:id="@+id/search"
          	android:title="Suche"
          	android:icon="@drawable/com_facebook_icon"
          	android:showAsAction="collapseActionView|ifRoom"
          	android:actionViewClass="android.widget.SearchView" />
    </menu>


    4. In meiner Activity (In dem Fall eine FragmentActivity) die onCreateOoptionsMenu erstellt:



    5. In der Manifest bei meiner "MainActivity->FragmentActivity" folgende Metadaten hinzugefügt:


    PHP
    <activity android:name=".views.NewsListActivity">
            	<meta-data android:name="android.app.searchable"
            	android:resource="@xml/searchable"
            	android:value=".views.SearchResultActivity" />
        	</activity>


    und noch die SearchResultActivity:


    PHP
    <activity android:name=".views.SearchResultActivity">
            	<meta-data android:name="android.app.searchable"
            	android:resource="@xml/searchable" />
            	<intent-filter>
    		    	<action android:name="android.intent.action.SEARCH" />
    			</intent-filter>
        	</activity>


    Meinem Layout der FragmentActivity habe ich nun keine SearchView hinzugefügt, da diese ja scheinbar über das Menü erstellt wird.


    Wenn ich die App starte und das Menü öffne und auf den Menüpunkt Suche klicke, passiert nichts. Es wird nichts angezeigt oder geändert.


    Ich bin mir zimlich sicher, dass ich irgendwas vergessen habe, weiss aber nichts was.


    Kann mir bitte jemand helfen?

    So,


    nun sollte ich es haben...manchmal sieht man den Wald vor lauter Bäumen nicht...


    Meine onCreate()



    wenn ich einen String erhalte, kann ich diesen direkt in der setAdapter und einer weiteren function weiterverarbeiten...


    Funktioniert alles wunderbar und so leicht :D

    So,


    ich hab es, so glaube ich, gelöst! Ob es die sauberste Variante ist? Ich glaube nicht, aber es ist die einzige die Funktioniert!


    In meine MainActivity in der onCreate() rufe ich meinen AsyncTask auf und übergebe dabei den context und meine ListView


    Java
    @Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    		listView = (ListView) findViewById(R.id.mylist);
    		
    		AsyncRSS as = new AsyncRSS(MainActivity.this, this.listView);
    		as.execute("http://search.twitter.com/search.json?q=android");
    	}


    In der MainActivity habe ich dann noch die update() Methode, die ich von der onPostExecute in der AsyncTaskClass aufrufe und übergebe dabei einen Adapter und die ListView, die vorher in die AsyncTaskClass geschleust habe:


    Java
    public AsyncRSS(Activity activity, ListView lv){
    		super();
    		this.mActivity = activity;
    		this.mLv = lv;
    	}



    Und dann noch meine update()


    Java
    public void update(CustomArrayAdapter adapter, ListView lv){
    		System.out.println(adapter);
    		this.adapter = adapter;
    		this.listView = lv;
    		this.listView.setAdapter(this.adapter);
    	}


    So funktioniert es erst einmal...wie gesagt, ich hatte das Problem vor ca. einem Jahr schon einmal, habe aber damals auf einem Mac gearbeitet den ich verkauft habe und natürlich weiss ich nicht mehr, wo ich die ganzen Projekte von damals gesichert habe...die Lösung von damals war deutlich sauberer....


    Wer was zum meckern hat zu dieser Lösung, immer her damit...denn das geht bestimmt noch sauberer....


    Danke!


    EDIT:


    Was natürlich total uncool ist -> will ich bei einem Tap auf einem ListItem zb. an den Title kommen, so muss ich folgendermaßen vorgehen in der update()


    Java
    this.listView.setOnItemClickListener(new OnItemClickListener() {
    
    
    			@Override
    			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    					long arg3) {
    				System.out.println(MainActivity.this.adapter.getItem(arg2).title);
    			}
        	});


    Also wenn jemand die RICHTIGE Lösung kennt, bitte posten!!!


    EDIT2:


    Ich dreh heute noch einmal am Kabel...


    Weiss nicht genau wie ich es beschreiben soll, aber alles was nun in der Update passiert, scheint irgendwie über die AsyncTask abgewickelt zu werden....


    Natürlich will ich auch eine neue Activity aufrufen mit den Daten des geklickten Items:



    Da bekomme ich eine NullPointerException auf MainActivity.this.getApplicationContext()...hab auch schon einiges anderes ausprobiert, keine abhilfe...verdammt.

    Meine MainActivity wie sie im Moment aussieht:


    Also Ausgabe in der Log erhalte ich:


    04-14 16:42:27.126: I/System.out(26516): onCreate(): [email protected]
    04-14 16:42:28.271: I/System.out(26516): updateAdapter(): null


    Ich weiss nicht wie ich den adapter updaten soll, wenn er null ist....ist doch zum Haare raufen....

    Ja dass man den Code nicht lesen konnte, liegt bei mir am Chrome wenn ich diesen einstelle, dann werden alle Formatierungen gelöscht....habs aber über den FF aktulaisiert wie man sieht ;)


    Das updaten des Adapters funktioniert nicht, ich bekomme da eine NullPointerException....


    In meiner MainActivity habe ich die updateAdapter Methode, diese rufe ich in meiner AsyncTaskClass in der onPostExecute auf.


    Meine updateAdapter sieht nun so aus:


    Java
    public void updateAdapter(RSSItems rssItems[]){
    		this.rssItems = rssItems;
    		
    		System.out.println(this.rssItems.length);
    		adapter.setList(this.rssItems);
    		adapter.notifyDataSetChanged();
    		
    	}


    Die Fehlermeldung:




    Was mache ich falsch....`????



    EDIT: Hier mal mein Adapter: