2013-12-16 93 views
2

我需要開發android文件瀏覽器應用程序。我將文件名和文件路徑分爲兩個獨立的ArrayList,然後分配給ArrayAdapter。我使用TextView來顯示文件名和文件夾名稱。文件瀏覽器運行良好。現在我需要將文件夾圖標添加到文件夾和文件圖標。如何將圖標添加到文件夾和文件?

由於所有文件夾和文件都在同一個ArrayAdapter中,因此無法在佈局文件中執行此操作。我試圖在代碼中這樣做,但我必須將整個ArrayList作爲ArrayAdapter作爲參數,因此我無法單獨對文件和文件夾進行分類。

如果有人有任何解決我的問題的建議,我會適當嗎?

回答

0

我正在解決同樣的問題。

  1. 一些ImageView在這裏設置圖標擴展您的列表行。例如 file_row.xml:

    <?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        android:orientation="vertical" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content"> 
        <ImageView 
         android:id="@+id/icon" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content"/> 
    
        <TextView 
         android:id="@android:id/text1" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:textAppearance="?android:textAppearanceLarge" 
         android:layout_toRightOf="@id/icon"/> 
    </RelativeLayout> 
    
  2. 填充ArrayAdapter與像File物品或東西從該信息isDirectory()getFileName()可以得到。

  3. (可選)使用比較器對適配器項目進行排序,並將它們與頂部左側的dirs進行比較。方法Adapter.sort(Comparator)

  4. 在ArrayAdapter的getView(int, View, ViewGroup)方法中做這樣的事情。

    @Override 
        public View getView(int position, View convertView, ViewGroup parent) 
        { 
         if(convertView == null) 
         { 
          convertView = LayoutInflater.from(getContext()).inflate(R.layout.file_row, null); 
         } 
    
         FileItem item = getItem(position); 
    
         TextView nameTextView = (TextView)convertView.findViewById(android.R.id.text1); 
         nameTextView.setText(item.getFileName()); 
    
         ImageView imageView = (ImageView)convertView.findViewById(R.id.icon); 
    
         if (item.isDirectory()) 
         { 
          imageView.setImageResource(R.drawable.directory); 
         } 
         else 
         { 
          imageView.setImageResource(R.drawable.file); 
         } 
    
         return convertView; 
        } 
    

當然你也可以做一些更復雜的東西,如設置不同的圖標爲每種文件類型,設置縮略圖等,但原理是相似。

+0

我還有一個問題。在佈局中,我只用了一個TextView。然後我把這個佈局作爲參數給了ArrayAdapter。之後,我將其設置爲ListAdapter。正如你所說的如何將ImageView添加到佈局中? – IBunny

相關問題