Archiv nach Schlagworten: Android

Android :: create dynamic table programmatically

My problem was to create a dynamic table and not hard xml-coded. So I’ve wrote a table class to create it programmatically. The created table has also borders.

TableGenerator class

public class TableGenerator {
    private final Context mContext;
    private TableLayout mTable;

    private TableLayout.LayoutParams rowParams = new TableLayout.LayoutParams();
    private TableRow.LayoutParams colParams = new TableRow.LayoutParams();

    public TableGenerator(Context context) {
        mContext = context;
        mTable = new TableLayout(context);
        rowParams.setMargins(0, 0, 0, 1);
        colParams.setMargins(0, 0, 1, 0);

        TableLayout.LayoutParams lptable = new TableLayout.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.MATCH_PARENT);
        mTable.setLayoutParams(lptable);

        mTable.setStretchAllColumns(true);
        mTable.setBackgroundColor(mContext.getResources().getColor(
                R.color.table_background));
    }

    public void addRow(String[] data) {
        TableRow tr = new TableRow(mContext);
        tr.setBackgroundColor(mContext.getResources().getColor(
                R.color.table_background));

        tr.setLayoutParams(rowParams);

        for (int iCol = 0; iCol < data.length; iCol++) {
            TextView tvCol = new TextView(mContext);
            tvCol.setText(data[iCol]);
            tvCol.setGravity(Gravity.CENTER | Gravity.CENTER);
            tvCol.setPadding(3, 3, 3, 3);
            tvCol.setTextColor(mContext.getResources().getColor(
                    R.color.text_black));
            tvCol.setLayoutParams(colParams);
            tvCol.setBackgroundColor(mContext.getResources().getColor(
                R.color.row_background));
            tr.addView(tvCol);
        }

        mTable.addView(tr);
    }

    public TableLayout getTable() {
        return mTable;
    }
}

how to use the class:

MainActivity class

public class MainActivity extends Activity {
	private ScrollView layMain;
	private TableGenerator mTable;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.layout_main);

		showTable();
	}

	private void showTable() {
		mTable = new TableGenerator(getApplicationContext());
		layMain = (ScrollView)findViewById(R.id.table);

		String[] firstRow = {"col1", "col2", "col3", "col4"};
		String[] secondRow = {"11", "12", "13", "14"};
		String[] thridRow = {"2a", "2b", "2c", "2d"};

		mTable.addRow(firstRow);
		mTable.addRow(secondRow);
		mTable.addRow(thridRow);

		layMain.removeAllViews();
		layMain.addView(mTable.getTable());
	}
}

to successfully use the code above you need to set the main.xml in layout folder to

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ScrollView
        android:id="@+id/table"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
    </ScrollView>

</LinearLayout>

now we need some color and string definitions res/values/strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
	<string name="app_name">Table</string>
	<color name="table_background">#999999</color>
	<color name="row_background">#ffffff</color>
</resources>

Downloads

Table.zip (Project files)
Table-180x300 in

VN:F [1.9.22_1171]
Rating: 4.8/5 (4 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 2 votes)

Android :: Custom Items in ListPreference

Lange habe ich gesucht, in Google mit den Wörtern „ListPreference SQLLite“ und bin immer auf sehr lange Beiträge gestoßen. Heute habe ich die Lösung gefunden, diese ist wie immer ganz einfach:

Ich habe jetzt hier nur den Teil gepostet, in dem die dynamischen Items der ListPreference zugeordnet werden.

addPreferencesFromResource(R.xml.app_preferences);

ListPreference lp = (ListPreference)findPreference("favourite_day");

CharSequence[] entries = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" };
CharSequence[] entryValues = { "1", "2", "3", "4", "5", "6", "7" };

lp.setEntries(entries);
lp.setEntryValues(entryValues);
VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Android :: ImageView drehen mit Animation

Um ein ImageView in Android zu drehen sind folgende Zeilen Code notwendig:

public void rotate(Viev v) {

	ImageView ivRotate = (ImageView)(findViewById(R.id.ivRotate));

	RotateAnimation aRotate = new RotateAnimation(0,180,
		ivRotate.getWidth() / 2, ivRotate.getHeight() / 2);
	aRotate.setDuration(3000);
	aRotate.setFillAfter(true);
	aRotate.setInterpolator(new LinearInterpolator());
	ivRotate.startAnimation(aRotate);
}

In die Layout.xml (z.B. main.xml) muss noch folgendes eingefügt werden, um diese Funktion mit einem Button aufzurufen:

<Button
	android:id="@+id/button1"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:text="Button"
	android:onClick="rotate">
</Button>
VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Compiler compliance level incorrect

Ich habe ein existierendes Android Projekt auf einen anderen PC kopiert und dann folgede Fehlermeldung bekommen:

Android requires compiler compliance level 5.0 or 6.0. Found ‚1.4‘ instead. Please use Android Tools > Fix Project Properties.

Ist ja schön und gut, nur wo finde ich denn das Menü?

Um dieses Problem zu Lösen einfach hier im Menü klicken: (Rechtsklick auf Projekt, dann Android Tools und jetzt auf Fix Project Properties)

CompilerCompliance-237x300 in

gefunden auf: http://stackoverflow.com/questions/5322901/import-existing-android-project-in-eclipse-no-gen-source-folder

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Eclipse download sehr langsam

Will man Android Aplicationen programmieren, so muss man das ADT-Plugin in Eclipse nachladen. Dies geht indem man unter Help -> Install new Software die Url

https://dl-ssl.google.com/android/eclipse/

eingibt. Setzt man den Haken vor Development Tools, und danach auf Next, so wird man sehr viel Zeit damit verbringen. Man kann unten lesen: Calculating requirements and dependencies und das endlos 😉

Lösung:

Um diese Zeit drastisch zu verkürzen, muss einfach der Haken aus der untersten Checkbox (rot eingekreist) entfernt werden.
EclipseDevTools-295x300 in

Lösung gefunden auf: http://stackoverflow.com/questions/4179612/eclipse-very-slow-to-start-a-plugin-install

VN:F [1.9.22_1171]
Rating: 5.0/5 (4 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Spinner setAdapter NullPointerException

Um diese Exception zu umgehen, muss man einfach nur vor

setAdapter

das Layout richtig gestellt werden, in dem der Spinner enthalten ist:

setContentView(R.layout.YOUR_LAYOUT);
VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Variabler Bildername (ImageView)

manchmal passiert es und man muss kann den Namen eines Bildes nicht statisch angeben. Daher muss man aus einer Variable eine Id erzeugen, und diese dann dem ImageView zuweisen.

ImageView img = new ImageView(this);
int resid = getResources().getIdentifier(VARIABLENNAME.toString(), "drawable", "PACKAGENAME");
img.setImageResource(resid);

VARIABLENNAME und PACKAGENAME müssen angepasst werden.

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Text fett aus Java-Code

um einen Text vom Java-Code her fett zu machen braucht man folgenden Befehl:

TextView text = new TextView(this);
text.setTypeface(null, Typeface.BOLD);
VN:F [1.9.22_1171]
Rating: 4.0/5 (3 votes cast)
VN:F [1.9.22_1171]
Rating: -1 (from 1 vote)