Verschachtelte for Schleife für FileExplorer

Z

ZegativeNero

Neues Mitglied
0
Hallo Leute,

ich hänge gerade an folgendem Problem:

und zwar möchte ich für mein App einen eigenen kleinen Browser erstellen welcher von der Ansicht ähnlich wie der ES-FileExplorer aufgebaut ist,
d.h. eine Tabelle mit n-Zeilen und 3 Spalten.

In etwa so:

File1 File2 File3
File4 File5 File6
File7

Um diese Tabelle dynamisch zu erzeugen benötige ich meines Wissens nach
"ineinander verschachtelte" For-Schleifen.
Diese habe ich bisher wie im unten angezeigten Codeauszug umgesetzt.

Das Problem, welches jetzt noch besteht und wo ich nicht mehr weiter weiß:

Wenn nur eine Datei oder ein Ordner sich im Ordner befinden, wird dieser nicht angezeigt ?!?
Sind es mehr als eine Datei / ein Ordner funktioniert es.

Weiß jemand Rat?

Code:
TableLayout table = (TableLayout)findViewById(R.id.filestable);
            
table.removeAllViews();

TableRow Trow = null;
            
TextView textView;

int cells=files_array.size(); //Bestimmt die Anzahl der insgesammt benötigten Zellen

int k = (cells/3); //Anzahl der benötigten Zeilen (bei 3 Spalten)
            
if(cells%3 >0){ k = k+1; } //Addiert eine zusätzliche Zeile, falls bei der vorangegangenen Teilung ein Rest besteht
            
int o = 0; //Variable um später den Index festzulegen           

for (int i = 0; i < k; i++) //Schleife um die Zeilen zu erzeugen
            
{
                
Trow = new TableRow(getApplicationContext());
                
for (int j = 0; j < 3; j++) //Füllt jede Zeile mit max 3 Werten
                
{

o++; //Indexvariable wird aufaddiert

if (o<=cells){ //Prüfung ob Index kleiner als die benötigten Zellen ist
                            
Boolean t = checkfiles_array.get(o-1); //Variable welche übermittelt ob es sich um eine Datei oder einen Ordner handelt                                              
if ( t == true){

LinearLayout cell = new LinearLayout(this);
cell.setOrientation(LinearLayout.VERTICAL);
cell.setId(o-1);                                //hier bekomme ich leichte Bauchschmerzen aber naja... bisher geht es nicht anders
cell.setClickable(true);
cell.setOnClickListener(this);
cell.setOnLongClickListener(this);

if(filename_array.get(o-1).endsWith(".txt")){

ImageView pImg1 = new ImageView(Filebrowser.this);
pImg1.setImageResource(R.drawable.txt_file_icon);
cell.addView(pImg1);

}

undsoweiterundsofort
 
Ist o++ nicht zu früh?

Gesendet von meinem Galaxy Nexus mit der Android-Hilfe.de App
 
Sieht für mich nicht so aus, weil danach mit o-1 gearbeitet wird (was nicht zur Übersichtlichkeit beiträgt). Beim drüber sehen habe ich in dem Codeausschnitt nichts gesehen.

Ich empfehle als Arbeitstechnik im Debuggingmodus einfach mal Zeile für zu prüfen was passiert. So kannst Du den Fehler wahrscheinlich selbst finden.
 
Irre...

Lösung gefunden:
Und zwar lag es nicht an dem oben beschriebenen Code, sondern, und jetzt kommts, daran, dass ich im Layout folgendes drinstehen hatte:

Code:
android:stretchColumns="0,1,2"

D.h. er hatte mir den Eintrag aus der Tabelle rausgestretcht...

Zwar sieht es gerade nicht schön aus, aber es funktioniert erstmal.

Und wenigstens weiß ich jetzt wie man dieses Log.v/d/irgendwas einsetzt :scared:

Die o-1 Lösung ist wirklich nicht sonderlich schön, ne alternative habe ich aber auch noch nicht rausgefunden
(Das sieht ein User ja zum Glück nicht...)

Mal wieder: Danke für die Hilfe!
 
Du machst dir das Leben unnötig schwer.
Anscheinend versuchst Du mit einem Tablelayout und verschachtelten For Schleifen genau das zu erreichen wozu ein GridView + Adapter die perfekte Lösung ist. Damit hast du auch den Vorteil ohne Aufwand die Ansicht von GridView auf ListView zu ändern ganz nach belieben des Anwenders.
 
Du machst dir das Leben unnötig schwer.
Anscheinend versuchst Du mit einem Tablelayout und verschachtelten For Schleifen genau das zu erreichen wozu ein GridView + Adapter die perfekte Lösung ist. Damit hast du auch den Vorteil ohne Aufwand die Ansicht von GridView auf ListView zu ändern ganz nach belieben des Anwenders.

Danke für den Tip!! Werde ich heute abend gleich mal ausprobieren ...
 

Ähnliche Themen

netfreak
  • netfreak
Antworten
10
Aufrufe
456
netfreak
netfreak
Manny87
  • Manny87
Antworten
11
Aufrufe
164
swa00
swa00
5
Antworten
0
Aufrufe
1.145
586920
5
Zurück
Oben Unten