Browsed by
Category: Besturingssystemen

Android – Using a list view to show data using the standard array adapter

Android – Using a list view to show data using the standard array adapter

In this article I will describe how to use a ListView to display data using the standard ArrayAdapter. The adapter will receive temperature data and will show it as a simple string in the list. For the data we create our own data class (TemperatureData).

Ok, let’s start with creating the main layout. In this layout we have a TextView which holds a header text and a ListView which will hold the temperature data.

main.xml:
[xml highlight=”16,17-20″]

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/header"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical|center_horizontal"
android:textSize="20sp"
android:textColor="#FF0000"
android:text="ListView using standard ArrayAdapter and simple list layout"
/>
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>

[/xml]

The following code shows the data class which will hold the temperature data. Important in this code is the implementation of the toString() method. Without this method the ArrayAdapter cannot display the list items.

TemperatureData.java:
[java highlight=”23,24-32″]

package nl.jestersoft.listviewtryout;

import android.text.format.Time;

public class TemperatureData
{
// The data
String SensorName;
double CurrentTemperature;
double MinimumTemperature;
double MaximumTemperature;
String TimeStamp;

public TemperatureData(String sensorName, double currentTemperature, double minimumTemperature, double maximumTemperature, String timeStamp )
{
SensorName = sensorName;
CurrentTemperature = currentTemperature;
MinimumTemperature = minimumTemperature;
MaximumTemperature = maximumTemperature;
TimeStamp = timeStamp;
}

@Override
public String toString()
{
String item;

// Just out out the data as a string
item = SensorName + ": " + CurrentTemperature + ", " + MinimumTemperature + ", " + MaximumTemperature + " (" + TimeStamp + ")";

return item;
}
}
[/java]

Now we have the main screen and the data definition, let’s take a look at the main code.

ListViewTryout.java:

[java highlight=”25,26,27″]
package nl.jestersoft.listviewtryout;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.widget.*;

public class ListViewTryout extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// Add some dummy data to the list
ArrayList<TemperatureData> tempData = GetDummyData();             

// Get list to view data in
ListView list = (ListView)findViewById(R.id.list);

// Show data in the list
int layoutID = android.R.layout.simple_list_item_1;
ArrayAdapter tempAdapter = new ArrayAdapter<TemperatureData>(this, layoutID, tempData);      
list.setAdapter(tempAdapter);
}

public ArrayList<TemperatureData> GetDummyData()
{
ArrayList<TemperatureData> dummyData = new ArrayList<TemperatureData>();

TemperatureData data1 = new TemperatureData("Balcony", 18.0, 16.0, 20.0, "30-07-2011 13:14");
dummyData.add(data1);

TemperatureData data2 = new TemperatureData("Living room", 24.0, 20.0, 25.0, "30-07-2011 13:14");
dummyData.add(data2);

TemperatureData data3 = new TemperatureData("Bath room", 18.0, 21.0, 27.0, "30-07-2011 13:15");
dummyData.add(data3);

return dummyData;
}

}
[/java]

Note that the code uses the ‘android.R.layout.simple_list_item_1’ layout for displaying the items.

When you run the code you will see the following result.

Android4ever

Android4ever

Naar aanleiding van het bericht van een collega (Apple fan) dat hij redacteur is geworden bij www.apple4ever.nl (Armin gefeleciteerd!), was ik als Android fan benieuwd of de domeinnaam www.android4ever.nl nog vrij zou zijn. En deze bleek nog vrij te zijn en dus heb ik deze maar laten registreren. Er zit (nog) geen aparte site achter, maar dat gaat misschien nog wel een keer gebeuren. Voorlopig verwijst het domein naar deze site.

Armin, mocht je toch nog een keer van je geloof vallen, dan ben je hier als redacteur van harte welkom 😉

Quickly access the command prompt

Quickly access the command prompt

As a programmer you sometimes need to use the command-line and start some command from a certain directory. This little registry hack show you how you can easily add a menu item to the context menu of Windows Explorer. These are the actions to take:

  1. Start the Registry Editor (regedit)
  2. Add the following key: HKEY_CLASSES_ROOT\Directory\shell\Command.
    Change the (default) value to ‘Command prompt’.
  3. Add the following key: HKEY_CLASSES_ROOT\Directory\shell\Command\command.
    Change the (default) value to ‘cmd.exe /k “cd /d %L”‘

This works for MS Windows Xp and newer versions of MS Window.

Generate XML-file from your internal data

Generate XML-file from your internal data

Are you a .Net programmer and ever wanted to write your internal data to an XML-file without wanting to do the writing yourself? Well here’s some example code which can be useful for you.

First some classes representing the internal data.

[csharp]
using System.Collections.ObjectModel;

namespace XmlSerializer
{
public class DataContainer
{
public JustSomeData Data1;
public Collection Data2;
}
}
[/csharp]
[csharp]
namespace XmlSerializer
{
public class SomeMoreData
{
public long Id;
public string Name;
public int Age;
}
}
[/csharp]

The internal data will be written to a XML-file using the XmlSerializer. The following code shows a method which will initialize the internal data and will write this data to a XML-file.

[csharp highlight=”41,42-51″]
private void ShowXmlSerialization()
{
#region Init

// Main data
var dataContainer = new DataContainer();
dataContainer.Data2 = new Collection<SomeMoreData>();

#endregion Init

#region Generate some data

// Just some data
var justSomeData = new JustSomeData()
{
Id = 1,
Code = "Demo",
Description = "Just some demo data"
};

// Add it to the main data
dataContainer.Data1 = justSomeData;

// Some more data
dataContainer.Data2.Clear();
for (int i = 1; i <= 5; i++)
{
var someMoreData = new SomeMoreData();

someMoreData.Id = i;
someMoreData.Name = string.Format("Name {0}", i);
someMoreData.Age = i * 3 + i * 10;

dataContainer.Data2.Add(someMoreData);
}

#endregion Generate some data

#region Serialize

// Serialize the data
var serializer = new System.Xml.Serialization.XmlSerializer(dataContainer.GetType());

#endregion Serialize

#region Write to file

// Write it to file
var filename = "JustSomeData.xml";
Stream writer = new FileStream(filename, FileMode.Create);
serializer.Serialize(writer, dataContainer);

#endregion Write to file
}
[/csharp]

The generated XML-file will look like:

[xml]
<?xml version="1.0"?>
<DataContainer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Data1>
<Id>1</Id>
<Code>Demo</Code>
<Description>Just some demo data</Description>
</Data1>
<Data2>
<SomeMoreData>
<Id>1</Id>
<Name>Name 1</Name>
<Age>13</Age>
</SomeMoreData>
<SomeMoreData>
<Id>2</Id>
<Name>Name 2</Name>
<Age>26</Age>
</SomeMoreData>
<SomeMoreData>
<Id>3</Id>
<Name>Name 3</Name>
<Age>39</Age>
</SomeMoreData>
<SomeMoreData>
<Id>4</Id>
<Name>Name 4</Name>
<Age>52</Age>
</SomeMoreData>
<SomeMoreData>
<Id>5</Id>
<Name>Name 5</Name>
<Age>65</Age>
</SomeMoreData>
</Data2>
</DataContainer>
[/xml]

Hoe installeer ik apps standaard op de SD kaart met Android 2.2 (Froyo)

Hoe installeer ik apps standaard op de SD kaart met Android 2.2 (Froyo)

Ook constant het probleem dat na het installeren van een nieuwe App de melding komt dat het geheugen vol is en dat daardoor bijvoorbeeld je e-mail niet meer binnenkomt op je Android telefoon?

Indien je in het bezit bent van minimaal Android 2.2 (Froyo), dan is hier een stappenplan om het probleem op te lossen. Het idee is om je telefoon zo in te stellen dat Apps standaard op de SD kaart worden geinstalleerd i.p.v. het interne geheugen.

Voer de volgende stappen uit om de telefoon de Apps standaard op de SD kaart te laten installeren:

  1. Ga naar Instellingen -> Applicaties -> Ontwikkeling en zet een vinkje bij ‘USB-foutopsporing
  2. Ga nu naar http://developer.android.com/sdk/ en download de Android SDK. Zorg ervoor dat ‘Usb Driver package’ wordt geselecteerd tijdens de installatie.
  3. Sluit de telefoon nu aan met de USB-kabel. Het besturingssysteem zal nu de benodigde driver installeren.
    Opmerking: alleen de kabel aanlsuiten en er niet voor kiezen om de telefoon te koppelen als schijfstation.
  4. Open een command-prompt and ga naar de directory [android-sdk-dir]\platform-tools.
  5. Voer het volgende command uit om na te gaan of de telefoon goed wordt herkend: adb devices.
    Je krijgt nu het serienummer van de telefoon te zien. Het nummer begint met een ‘H’.
  6. Voer nu het volgende commando uit: adb shell pm setInstallLocation 2. Vanaf nu worden de Apps standaard op de SD kaart geinstalleerd.
  7. Zet het vinkje bij ‘USB-foutopsporing’ (zie stap 1) weer uit.

Opmerkingen:

  • Wil je weer standaard de Apps op het interne geheugen geinstalleerd hebben, voer dan het volgende commando uit: adb shell pm setInstallLocation 0.
  • Houdt er rekening mee dat niet alle Apps goed draaien indien ze op de SD kaart zijn geinstalleerd. Indien je bijvoorbeeld widgets van een App gebruikt, is er een kans dat deze niet werken. Ook Apps die zichzelf als service installeren om bijvoorbeeld op gezette tijden een hun data op te halen kunnen wel eens niet meer werken indien ze op de SD kaart zijn geinstalleerd.

Applicaties die het niet (goed) doen indien geinstalleerd op SD kaart:

  • Dolphin Browser HD: Internetten niet meer mogelijk.
  • TweetDeck: Updates komen niet meer (automatisch) binnen
Microsoft lanceert Security Essentials 2.1

Microsoft lanceert Security Essentials 2.1

Microsoft heeft een nieuwe versie van de gratis virusscanner Security Essentials gelanceerd. De grootste verandering lijkt dat er geen specifiek besturingssysteem installatiebestand meer gekozen moet worden. Voorheen moesten gebruikers aangeven of ze Windows XP, Vista of Windows 7 gebruikten. Het enige dat gebruikers nu nog moeten kiezen is een 32- of 64-bit installatiebestand.

Wie Security Essentials al gebruikt, krijgt de nieuwe versie nog niet aangeboden. Wie over op Security Essentials 2.1.1116.0 wil, zal daarom het installatiebestand zelf moeten downloaden. Onlangs bleek uit onderzoek dat Security Essentials de meest gebruikte virusscanner ter wereld is.

 

Via: Security.nl

Windows 7 snelstart balk instellen

Windows 7 snelstart balk instellen

In Windows 7 is het niet meer standaard mogelijk om de snelstart balk in te stellen. Dit betekend niet dat deze er niet meer is. Met de volgende stappen is deze eenvoudig weer te gebruiken:

  1. Klik met rechter muisknop op de taakbalk
  2. Kies in het werkbalk menu voor nieuwe werkbalk
  3. Kies in het dan volgende scherm de map: %SystemDrive%\Users\%username%\AppData\Roaming\Microsoft\Internet Explorer\

De snelstart balk wordt nu getoond in de taakbalk. Door de taakbalk los te koppelen (rechter muisknop / taakbalk losmaken) kun je de snelstart balk verplaatsen. Met rechter muisknop klikken op de snelstart balk geeft de mogelijkheid om de tekst labels en titel bij de balk uit of aan te zetten.

Microsoft: Maak back-up voor Windows 7 SP1

Microsoft: Maak back-up voor Windows 7 SP1

Wie Service Pack 1 voor Windows 7 wil installeren, moet eerst een back-up maken en de computer op malware scannen, zo waarschuwt Microsoft. De softwaregigant is vandaag onder een select gezelschap begonnen met de uitrol van SP1 voor Windows 7 en Server 2008. MSDN en TechNet abonnees alsmede Volume License klanten kunnen nu al de mega-update downloaden. Volgende week verschijnt de download ook voor de overige Windows 7-gebruikers.

Wie een enkele installatie wil updaten krijgt van Microsoft het advies om Windows Update te gebruiken in plaats van het losse installatiebestand te downloaden. “Windows Update biedt de beste installatie ervaring voor je”, zegt Brandon LeBlanc. Hij benadrukt gebruikers om hun computer voor installatie van het Service Pack op malware te controleren. “Dit is superbelangrijk, als je pc besmet is, kan dit de installatie van SP1 beïnvloeden, alsmede toekomstige updates voor je machine.”

Google laat PDF’s lezen in browser

Google laat PDF’s lezen in browser

Google heeft een PDF-reader ingebouwd in de gisteren vrijgegeven Chrome 8 browser. Dat betekent dat voortaan het programma Adobe Reader niet meer opgestart hoeft te worden.

Gebruikers van Chrome kunnen de bestanden voortaan direct in het browservenster lezen. Google heeft de PDF reader ingebouwd in een zogenaamde ’sandbox’ waardoor de veiligheidsrisico’s afnemen. Zo’n sandbox voorkomt dat een aanval op een PDF-bestand een bredere aanval op de computer kan veroorzaken.

De PDF reader is slechts een van de 800 verbeteringen in Chrome 8, waaronder 12 veiligheidsoplossingen. Bovendien heeft Google bekendgemaakt dat het de eerste versie is die de Chrome WebStore ondersteunt, maar deze dienst voor webapplicaties is nog niet gelanceerd.

Via: De Telegraaf Digitaal

Snel bij opdrachtregel

Snel bij opdrachtregel

Om snel een command-prompt op te kunnen vragen via de windows verkenner en er voor te zorgen dat je ook direct in de juiste directory staat, kan de volgende wijziging in de registry worden gemaakt:

  1. Voeg de volgende key toe:
    HKEY_CLASSES_ROOT\Directory\shell\Command
    .
    Verander de (default) waarde in ‘Command prompt‘.
  2. Voeg de volgende key toe:
    HKEY_CLASSES_ROOT\Directory\shell\Command\command
    .
    Verander de (default) waarde in ‘cmd.exe /k “cd %L”

Na deze wijziging moet het rechter muisknop menu in de windows verkenner zijn uitgebreid met de optie ‘Command prompt’.
Indien deze niet direct aanwezig is, dan moet eerste de computer opnieuw worden opgestart.