Android Lazy Icon Listview - PullRequest
       9

Android Lazy Icon Listview

0 голосов
/ 27 октября 2011

=== РЕДАКТИРОВАТЬ ===

Есть ли причина, по которой что-то подобное не работает, я чувствую, что должно, но это не сработает lView.getChildCount () возвращает 0, даже если в списке много, а затем это вызывает принудительное закрытие

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

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

Сначала я знаю, что вы можете создавать собственные адаптеры, и все, что я просто думаю для своих целей, так как это простой файловый браузер, ничего сложного, может быть, это можно сделать.

В любом случае, как я уже сказал, я работаю над очень простым файловым браузером для части приложения, которое я пишу. Я установил его, чтобы показать все файлы в каталоге и рядом с ним значок. На данный момент значок одинаков для каждого файла, но я хотел бы иметь значок для каждого типа файла (например, ZIP, папок, скриптов и т. Д.)

То, что я хотел бы сделать, это после того, как массив и все было сделано, просто сделайте так, как для каждой позиции, проверьте элемент и, если он заканчивается, скажем .zip, измените значок что-нибудь в соответствии с этим

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);
   }
}

В любом случае, вот код, который я использую в настоящее время, на всякий случай, если это необходимо, и спасибо за любую помощь или ввод

public class SampleList extends ListActivity {

    private List<String> item = null;
    private List<String> 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<String>();
        path = new ArrayList<String>();

        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<String> fileList = new ArrayAdapter<String>(this, R.layout.row, R.id.rowTextView, item);
        setListAdapter(fileList);
        class IgnoreCaseComparator implements Comparator<String> {
            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) {

    }   
}

1 Ответ

0 голосов
/ 27 октября 2011

Взгляните на пример здесь .Это покрыто довольно часто.

...