Android Lazy Icon Lijstweergave

=== EDIT ===

Is er een reden dat zoiets niet werkt, dan heb ik het gevoel dat het zou moeten werken, maar het werkt niet lView.getChildCount() geeft 0 terug, hoewel er veel in de lijst staat en dit zorgt ervoor dat een force wordt gesloten

for (int i = 0; i < lView.getChildCount(); i++) {
   ImageView imageView = (ImageView) lView.getChildAt(i).findViewById(R.id.listIcon);
   imageView.setImageResource(R.drawable.someIcon);
}

==================================

Eerst weet ik dat je aangepaste adapters kunt maken en alles wat ik denk alleen maar voor mijn doeleinden aangezien dit een eenvoudige bestandsbrowser is, niets geavanceerd, misschien kan dit worden gedaan.

Hoe dan ook, zoals ik al zei, ik ben bezig met een zeer eenvoudige bestandsbrowser voor een deel van een app die ik aan het schrijven ben. Ik heb het ingesteld om alle bestanden in een map te tonen en er een pictogram naast te hebben. Het pictogram op dit moment is hetzelfde voor elk bestand, maar ik wil graag een pictogram voor elk type bestand (zoals ritsen, mappen, scripts, enzovoort)

Wat ik zou willen doen is na de array en alles is gemaakt gewoon doen zoals voor elke positie het item controleren en als het eindigt in .zip verander dan het pictogram iets in de trant van dit

for(eachposition){
   if(position.endsWith(".zip"){
      ImageView iv = (ImageView) findViewById(R.id.listIcon);
      iv.setImageResource(R.drawable.zipImage);
   }else if(position.endsWith(".sh"){
      ImageView iv = (ImageView) findViewById(R.id.listIcon);
      iv.setImageResource(R.drawable.scriptImage);
   }else{
      ImageView iv = (ImageView) findViewById(R.id.listIcon);
      iv.setImageResource(R.drawable.generalImage);
   }
}

hoe dan ook, hier is de code die ik momenteel gebruik voor het geval dit nodig is en bedankt voor alle hulp of input

public class SampleList extends ListActivity {

    private List item = null;
    private List path = null;
    private String root = "/sdcard/somefolder/";
    private String current = null;
    Context context;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list);
        context = getApplicationContext();
        try{
            getDir(root);
            File directory = new File(root);
            File[] contents = directory.listFiles();
            if (contents.length == 0) {
                TextView t = new TextView(this); 
                t=(TextView)findViewById(R.id.empty); 
                t.setText(R.string.emptyFol);
            }
        }catch (Exception e) {
            Toast.makeText(NandPicker.this, R.string.nMount, Toast.LENGTH_LONG).show();
        }
    }

    private void getDir(String dirPath){
        item = new ArrayList();
        path = new ArrayList();

        File f = new File(dirPath);
        File[] files = f.listFiles();

        for(int i=0; i < files.length; i++){
            File file = files[i];
            //Problem was adding the path without the /
            //path.add(file.getPath());
            if(file.isDirectory()){
                path.add(file.getPath()+"/");
                item.add(file.getName() + "/");
            }else{
                path.add(file.getPath());
                item.add(file.getName());
            }
        }

        current = dirPath;

        ArrayAdapter fileList = new ArrayAdapter(this, R.layout.row, R.id.rowTextView, item);
        setListAdapter(fileList);
        class IgnoreCaseComparator implements Comparator {
            public int compare(String strA, String strB) {
                return strA.compareToIgnoreCase(strB);
            }
        }
        IgnoreCaseComparator icc = new IgnoreCaseComparator();
        java.util.Collections.sort(path,icc);
        java.util.Collections.sort(item,icc);
    }

    @Override
    protected void onListItemClick(ListView l, View v, final int position, long id) {

    }   
}
0

1 antwoord

Bekijk hier een voorbeeld hier . Dit komt vrij vaak aan bod.

0
toegevoegd
ik heb mijn vraag bewerkt met een lus die ik schreef dat ik zou moeten werken, maar om de een of andere reden retourneert de methode getChildCount 0, ook al heeft de lijst veel kinderen Ik voer de lus ook goed uit na de adapter en alles is ingesteld zou niet moeten veranderen elk pictogram?
toegevoegd de auteur GFlam, de bron