Textdatei in App darstellen

  • 32 Antworten
  • Letztes Antwortdatum
Guten Mittag,

Entschuldigung für meine lange Abwesenheit...
in der Zwischenzeit hatte ich einen Termin bei einer Firma, welche Apps entwickelt, die Programmierer dort haben mir ein großes Stück weiterhelfen können. ich habe unten mal einen Teil des Codes reingestellt. Das Programm zeigt momentan die ersten 10 Zeilen aus den ersten zwei Spalten an. Der Programmierer hat die Datei auf seinen Webserver hochgeladen... Ich habe keinen Webserver, weshalb ich es mit "file-upload" gemacht habe. nun funktioniert das ganze aber nicht mehr. das Programm wird zwar ausgeführt, Stürzt mir dann aber ab. kann mir jemand sagen, wo ich dafür die Fehlermeldung herbekomme? weil die concole sagt mir nichts, da die App ja ausgeführt wird.

im Anhang habe ich einen Teil der Fehlermeldung reingestellt, das wird mir auf Meinem Handy angezeigt, wenn ich das Programm starten möchte. Leider kann ich nicht scrollen um die Fehlermeldung komplett anzeigen zu lassen.

MfG Kürbis

Code:
package com.example.stundenplan;

import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TableRow.LayoutParams;
import android.widget.TextView;

import com.example.stundenplan.listener.DownloadFinishedListener;
import com.example.stundenplan.model.Entry;
import com.opencsv.CSVReader;

public class MainActivity extends Activity implements DownloadFinishedListener {

	private static final String FILENAME = "stundenplan.txt";
	private ArrayList<Entry> mEntries = new ArrayList<Entry>();

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

		String downloadFile = getExternalFilesDir(null) + "stundenplan.txt";
		String url = "http://www.file-upload.net/download-10301861/stundenplan.txt.html";
		TextView tvProgress = (TextView) findViewById(R.id.progress);

		new FileDownloader(this, tvProgress).execute(url, downloadFile);
	}

	private void buildTable() {
		TableLayout table = (TableLayout) findViewById(R.id.table);

		for (int i = 0; i < 10; i++) {
			TableRow row = new TableRow(this);

			LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT,
					LayoutParams.WRAP_CONTENT, 1f);

			TextView textView = new TextView(this);
			textView.setLayoutParams(lp);
			
			TextView textView2 = new TextView(this);
			textView2.setLayoutParams(lp);

			textView.setText(mEntries.get(i).getEntry1());
			textView2.setText(mEntries.get(i).getEntry2());

			row.addView(textView);
			row.addView(textView2);

			table.addView(row);
		}
	}

	@Override
	public void onDownloadFinished() {
		CSVReader reader = null;
		try {
			reader = new CSVReader(new FileReader(getExternalFilesDir(null)
					+ FILENAME), ',');
			String[] nextLine;

			while ((nextLine = reader.readNext()) != null) {
				if (nextLine.length > 1) {
					Entry entry = new Entry(nextLine[0], nextLine[1]);
					mEntries.add(entry);
				}
			}
		} catch (IOException e) {
			// TODO
		} finally {
			try {
				reader.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}


		Collections.sort(mEntries);

		findViewById(R.id.loading).setVisibility(View.GONE);

		buildTable();
	}

	@Override
	public void onDownloadFailed() {
		// TODO Download failed
	}

}
 

Anhänge

  • Fehlermeldung.png
    Fehlermeldung.png
    31,8 KB · Aufrufe: 221
Hallo Kuerbis,

es ist ja eigentlich egal, ob du die Datei in den Assets hälst oder auf einem Server.
Das Problem an deinem Code ist, dass du die "html"-Datei runterlädst.
Nimm mal als URL: File-Upload.net - stundenplan.txt
Ich weiß leider nicht, ob das aus einem Programm heraus funktioniert, da solche Anbieter oft Werbung schalten, damit sie sich überhaupt halten können.
 
mh also immerhin stürzt mir die App nicht mehr ab. allerdings läd sie sich nun zu tote und steht bei 0%. gibt es eine Alternatieve zu einem eigenem Webserver und File-Upload?
 
Ja, heute kannst du deine Dateien in eine Cloud legen und einen öffentlichen Link generieren lassen.

Für deinen Fall empfehle ich die gute alte DropBox.
 
Leider sieht es immer noch so aus...
 

Anhänge

  • Stundenplan.png
    Stundenplan.png
    4,9 KB · Aufrufe: 152
Hi,

dann poste mal deine URL. Vielleicht hast du wieder einen falschen Link.
Er muss direkt auf die Datei zeigen. Der Mimetype wäre auch nicht schlecht.
 
Code:
package com.example.stundenplan;

import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TableRow.LayoutParams;
import android.widget.TextView;

import com.example.stundenplan.listener.DownloadFinishedListener;
import com.example.stundenplan.model.Entry;
import com.opencsv.CSVReader;

public class MainActivity extends Activity implements DownloadFinishedListener {

	private static final String FILENAME = "stundenplan.txt";
	private ArrayList<Entry> mEntries = new ArrayList<Entry>();

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

		String downloadFile = getExternalFilesDir(null) + "stundenplan.txt";
		String url = "dropbox.com - stundenplan.txt";
		TextView tvProgress = (TextView) findViewById(R.id.progress);

		new FileDownloader(this, tvProgress).execute(url, downloadFile);
	}

	private void buildTable() {
		TableLayout table = (TableLayout) findViewById(R.id.table);

		for (int i = 0; i < 10; i++) {
			TableRow row = new TableRow(this);

			LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT,
					LayoutParams.WRAP_CONTENT, 1f);

			TextView textView = new TextView(this);
			textView.setLayoutParams(lp);
			
			TextView textView2 = new TextView(this);
			textView2.setLayoutParams(lp);

			textView.setText(mEntries.get(i).getEntry1());
			textView2.setText(mEntries.get(i).getEntry2());

			row.addView(textView);
			row.addView(textView2);

			table.addView(row);
		}
	}

	@Override
	public void onDownloadFinished() {
		CSVReader reader = null;
		try {
			reader = new CSVReader(new FileReader(getExternalFilesDir(null)
					+ FILENAME), ',');
			String[] nextLine;

			while ((nextLine = reader.readNext()) != null) {
				if (nextLine.length > 1) {
					Entry entry = new Entry(nextLine[0], nextLine[1]);
					mEntries.add(entry);
				}
			}
		} catch (IOException e) {
			// TODO
		} finally {
			try {
				reader.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}


		Collections.sort(mEntries);

		findViewById(R.id.loading).setVisibility(View.GONE);

		buildTable();
	}

	@Override
	public void onDownloadFailed() {
		// TODO Download failed
	}

}
 
"dropbox.com - stundenplan.txt" ist kein gültiger URL.
 
"https://www.dropbox.com/s/q7qb5qvl206wfup/stundenplan.txt?dl=0"
"http://www.file-upload.net/download-10317482/stundenplan.txt.html"
"https://www.dropbox.com/s/q7qb5qvl206wfup/stundenplan.txt?dl=0 - stundenplan.txt"
"http://www.file-upload.net/download-10317482/stundenplan.txt.html - stundenplan.txt"
"http://dropbox.com - stundenplan.txt"
"http://file-upload.net - stundenplan.txt"
"https://dropbox.com/stundenplan.txt"

die ersten 3 sind abgestürzt, die restlichen haben sich bei 0% tot geladen

"http://dropbox.com/stundenplan.txt"

hier hat die App bis 100% geladen aber dann ist nicht mehr passiert, als das sie bei 100% sich zu tode geladen hat

"http://file-upload.net/stundenplan.txt"

bei dem Link ist die App wieder abgestürzt
 
1) Versuch mal den Download-Link und nicht die Webansicht: https://www.dropbox.com/s/q7qb5qvl206wfup/stundenplan.txt?dl=1

2) Für HTTPS-Verbindungen wirst du vermutlich mehr Aufwand betreiben müssen (ich muss gestehen, dass ich gerade nicht weiß die FileDownloader() arbeitet), daher versuch das auch mal mit: http://www.dropbox.com/s/q7qb5qvl206wfup/stundenplan.txt?dl=1



EDIT: Dir würde es gut tun, wenn du dir mal den Aufbau einer URL, und was die einzelnen Komponenten bedeuten, anschaust. Nur die ersten beiden sind von Syntax und Semantik überhaupt annähernd sinnvoll.
 
Zuletzt bearbeitet:
Hallo Kuerbis,

ich zitiere hier mal meine letzte Antwort:
"Er muss direkt auf die Datei zeigen. Der Mimetype wäre auch nicht schlecht."

Thyrion hat dir den korrekten Link schon gezeigt. Dir hätte auch auffallen können, dass bei deinen ersten Links der Mimetype auf html steht.

Ich finde es komisch, dass du nicht mit mir diese Aufgabe programmiert hast, obwohl ich dir sehr viel Hilfe in den ersten Posts angeboten und auch gegeben habe.
 
https://www.dropbox.com/s/q7qb5qvl206wfup/stundenplan.txt?dl=1

der wars, vielen Dank.



@ Kardroid

warum habe ich es nicht mit dir Programmiert? Gute Frage... ich wusste nach einiger Zeit das ich diesen Termin bei der Firma bekomme und dort einer sitzt der mit mir oder für mich vor Ort einen Teil schreibt. Es war natürlich sehr schade von mir, dir das nicht mitzuteilen, stat dessen habe ich garnichts geschrieben.
 
Das Ergebnis sieht dafür aber auch nicht so gut aus.

Mit meiner Hilfe hätten wir einen CustomListAdapter bauen können, der mittels Viewholder auch noch performant wäre.
Auch wäre ein Nachladen der Liste möglich. (Also es werden nur 10 angezeigt, aber wenn man runter wischt kommen weitere 10 Einträge etc.)
Auch hätte die Liste über das Model gut sortiert werden können. (Nach Lehrer, Raum, Zeit etc).

Jetzt werden dir nur zwei Texte pro Zeile angezeigt, und auch nicht besonders formatiert.
Bei einer etwas aufwendigeren Lösung hätte man ein Layout inflaten können und dieses schön formatieren können.

Ich habe aber jetzt bei deiner Nachfrage nach der URL gesehen, dass du nicht so an der Materie interessiert bist und du einfach nur eine schnelle Lösung haben wolltest, statt wirklich zu lernen, wie man eine App erstellt.

Ich fühle mich nicht gekränkt, da es auch von mir sicher ein Zeitaufwand von 10 bis 20 Stunden gewesen wäre, mit dir diese App zu erstellen.
Diese Zeit spare ich mir ja jetzt :laugh:
 

Ähnliche Themen

L
Antworten
1
Aufrufe
116
swa00
swa00
migi01
Antworten
26
Aufrufe
809
migi01
migi01
D
Antworten
5
Aufrufe
290
swa00
swa00
BerndFfm
Antworten
7
Aufrufe
898
swa00
swa00
S
Antworten
27
Aufrufe
888
swa00
swa00
Zurück
Oben Unten