Firefox 4.0.1
SQLite Manager 0.7.2
Eclipse 3.6.2
Android 2.3.1
Wenn man sich eine SQLite Datenbank aus dem Eclipse Emulator ziehen will folgt man einfach folgenden Schritten:
Man öffnet die DDMS Ansicht in Eclipse mit "Windows -> Open Perspective" und wählt DDMS:
Danach sucht man sich im Dateisystem seine Datenbank und exportiert diese:
Um diese Datei zu öffnen verwende ich das Firefox Add-On SQLite Manager:
Voila, schon kann man die Datenbank ansehen, manipulieren und über das DDMS sogar zurückspielen.
Links:
Designerandroid Beitrag
Showing posts with label Android. Show all posts
Showing posts with label Android. Show all posts
Saturday, 14 May 2011
Sunday, 6 March 2011
ListView in Android: TextView und EditText in einer Zeile
Android 2.3.1
Wenn mann aus einem xml-File eine längere Liste von Strings zu Controls auf der Oberfläche verarbeinen will, ist ListView ein geeignetes Mittel, soll nur ein Control pro Zeile vorhanden sein ist der Aufwand wie hier beschrieben minimal.
Sollen mehrere Controls pro Zeile vorhanden sein wird es etwas mehr Aufwand, aus verschiedenen Quellen im Netz hab ich mir soetwas zusammengebaut, ich stelle es nun hier vor:
Die Activity:
Bei der DefaultListActivity handelt es sich nur um eine Klasse die ListActivity extended und ein paar Methoden beinhalted, die ich in allen ListActivities zur Verfügung haben will. Im Prinzip lese ich hier nur mein xml aus und stopfe die Werte zusammen mit einem Leerstring in ein RowHolder Array, das ich meinen MyListAdapter übergebe, den ich dann als ListAdapter festlege.
Der RowHolder:
Der ListAdapter:
Der Aufwand, der hier betrieben wird, ist schon etwas mehr als wenn nur ein Element pro Zeile vorhanden wäre. Allerdings läßt sich obiges wiederverwenden, sind also viele Ansichten ähnlich, müssen aber aus verschiedenen xml´s befüllt werden, nutzt man es einfach nochmal.
Dazu das vereinfachte inputproperties.xml aus dem layout Folder (Die Darstellung der Groß- und Kleinschreibung haut leider so gar nicht hin, muß beim kopieren entsprechend geändert werden):
Und das listrow.xml aus dem layout Folder:
Wie aber bekommt man die Werte nun wieder raus, wenn ich sie zB. persistieren will? Hierzu habe ich mich wieder des ListAdapters bedient:
Methode saveProperties() der Klasse InputPropertiesActivity:
Das Ergebnis (inklusive einiger Modifikationen, mit obigen Code wurde nur die Liste erzeugt) sieht dann so aus, wobei die Anzahl der Elemente beliebig ist:
Links:
Problemstellung zu dieser Konstellation
Sollen mehrere Controls pro Zeile vorhanden sein wird es etwas mehr Aufwand, aus verschiedenen Quellen im Netz hab ich mir soetwas zusammengebaut, ich stelle es nun hier vor:
Die Activity:
public class InputPropertiesActivity extends DefaultListActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.inputproperties);
final List rowHolders = new ArrayList();
String[] rowNames = getResources().getStringArray(R.array.properties);
for (int i = 0; i < rowNames.length; i++) {
RowHolder talentholder = new RowHolder(rowNames[i], "");
rowHolders.add(talentholder);
}
setListAdapter(new MyListAdapter(this, R.layout.listrow, rowHolders));
}
}
Bei der DefaultListActivity handelt es sich nur um eine Klasse die ListActivity extended und ein paar Methoden beinhalted, die ich in allen ListActivities zur Verfügung haben will. Im Prinzip lese ich hier nur mein xml aus und stopfe die Werte zusammen mit einem Leerstring in ein RowHolder Array, das ich meinen MyListAdapter übergebe, den ich dann als ListAdapter festlege.
Der RowHolder:
public class RowHolder {
String rowName;
String rowValue;
public RowHolder(String talentName, String talentValue) {
this.rowName = talentName;
this.rowValue = talentValue;
}
public String getRowName() {
return rowName;
}
public void setRowName(String rowName) {
this.rowName = rowName;
}
public String getRowValue() {
return rowValue;
}
public void setRowValue(String rowValue) {
this.rowValue = rowValue;
}
}
Der ListAdapter:
public class MyListAdapter extends BaseAdapter {
private final List rowholders;
private final int rowResID;
private final LayoutInflater layoutInflater;
public MyListAdapter(final Context context, final int rowResID, final List rowHolder) {
this.rowResID = rowResID;
this.rowholders = rowHolder;
layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
return rowholders.size();
}
public Object getItem(int position) {
return rowholders.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder viewHolder;
final RowHolder rowholder;
if (convertView == null) {
viewHolder = new ViewHolder();
rowholder = rowholders.get(position);
convertView = layoutInflater.inflate(rowResID, null);
viewHolder.rowName = (TextView) convertView.findViewById(R.id.rowname);
viewHolder.rowName.setText(rowholder.getRowValue());
viewHolder.rowValue = (EditText) convertView.findViewById(R.id.rowvalue);
viewHolder.rowValue.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable edit) {
rowholders.get(viewHolder.ref).setRowValue(edit.toString());
}
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
});
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.ref = position;
viewHolder.rowName.setText(rowholders.get(position).getRowName());
viewHolder.rowValue.setText(rowholders.get(position).getRowValue());
return convertView;
}
class ViewHolder {
TextView rowName;
EditText rowValue;
int ref;
}
}
Der Aufwand, der hier betrieben wird, ist schon etwas mehr als wenn nur ein Element pro Zeile vorhanden wäre. Allerdings läßt sich obiges wiederverwenden, sind also viele Ansichten ähnlich, müssen aber aus verschiedenen xml´s befüllt werden, nutzt man es einfach nochmal.
Dazu das vereinfachte inputproperties.xml aus dem layout Folder (Die Darstellung der Groß- und Kleinschreibung haut leider so gar nicht hin, muß beim kopieren entsprechend geändert werden):
Und das listrow.xml aus dem layout Folder:
Wie aber bekommt man die Werte nun wieder raus, wenn ich sie zB. persistieren will? Hierzu habe ich mich wieder des ListAdapters bedient:
Methode saveProperties() der Klasse InputPropertiesActivity:
public void saveProperiets() {
for (int i = 0; i < this.getListAdapter().getCount(); i++) {
String rowName = ((RowHolder) this.getListAdapter().getItem(i)).getRowName();
String rowValue = ((RowHolder) this.getListAdapter().getItem(i)).getRowValue();
Log.d("NAME - VALUE:", rowName + " " + rowValue);
if (rowValue == null || rowValue.equalsIgnoreCase("")) {
showDialog(DIALOG_PROPERTY_MISSING_ID);
} else {
inputTalents();
}
}
}
Das Ergebnis (inklusive einiger Modifikationen, mit obigen Code wurde nur die Liste erzeugt) sieht dann so aus, wobei die Anzahl der Elemente beliebig ist:
Links:
Problemstellung zu dieser Konstellation
Labels:
Android,
Java,
ListAdapter,
ListView
Friday, 25 February 2011
Android Source für Eclipse
Eclipse 3.6.1
Android 2.3.1
In einem früheren Post habe ich schon erklärt wie man den Source für Android in Eclipse nutzbar macht, habe nun aber kein .zip für 2.3.1 gefunden. Über git wärs zwar möglich sich das selber zusammen zu basteln, aber bequem wie man ist hätte man es gerne einfacher.
Und tatsächlich gibt es ein Eclipse Plugin, das einem dem Source anhängt, mit dem Eclipse Update Manager lädt man mittels dieser Adresse:
Links:
Blogeintrag zu diesem Thema
Android 2.3.1
In einem früheren Post habe ich schon erklärt wie man den Source für Android in Eclipse nutzbar macht, habe nun aber kein .zip für 2.3.1 gefunden. Über git wärs zwar möglich sich das selber zusammen zu basteln, aber bequem wie man ist hätte man es gerne einfacher.
Und tatsächlich gibt es ein Eclipse Plugin, das einem dem Source anhängt, mit dem Eclipse Update Manager lädt man mittels dieser Adresse:
http://adt-addons.googlecode.com/svn/trunk/source/com.android.ide.eclipse.source.updatedas Plugin, nach einem Neustart kann man schon durch den Source cruisen... .
Links:
Blogeintrag zu diesem Thema
Monday, 14 June 2010
Source der Android SDK für Eclipse anhängen
Architektur: x86_64
OS: Ubuntu 10.04 LTS - Lucid Lynx
IDE: Eclipse 3.5.2
Es ist mühsam Androidprogramme zu debuggen, wenn man nicht in den Source der SDK reinlesen kann.
Hier eine kleine Anleitung, wie man für 1.5, 1,6 und 2.1 den Source sauber in Eclipse bekommt.
Dazu lädt man einfach an obigen entsprechenden Link das Package down und entpackt ihn in einem neuen Folder, der "sources" genannt und hier angelegt wird -Pfad zur SDK-/platforms/-Entsprechende Version-, der neue Folder könnte also so liegen:
Danach sollte man auch den Source der SDK in Eclipse betrachten können.
Gefunden habe ich diese zip-Dateien auf android.opensourceror.org, wo auch eine Anleitung nachzulesen ist, wie man sich selbst so ein Package bastelt.
OS: Ubuntu 10.04 LTS - Lucid Lynx
IDE: Eclipse 3.5.2
Es ist mühsam Androidprogramme zu debuggen, wenn man nicht in den Source der SDK reinlesen kann.
Hier eine kleine Anleitung, wie man für 1.5, 1,6 und 2.1 den Source sauber in Eclipse bekommt.
Dazu lädt man einfach an obigen entsprechenden Link das Package down und entpackt ihn in einem neuen Folder, der "sources" genannt und hier angelegt wird -Pfad zur SDK-/platforms/-Entsprechende Version-, der neue Folder könnte also so liegen:
/usr/local/android-sdk-linux_x86-1.6_r1/platforms/android-1.6/sources
Danach sollte man auch den Source der SDK in Eclipse betrachten können.
Gefunden habe ich diese zip-Dateien auf android.opensourceror.org, wo auch eine Anleitung nachzulesen ist, wie man sich selbst so ein Package bastelt.
Subscribe to:
Posts (Atom)



