【问题标题】:How to Add icons to folders and files?如何将图标添加到文件夹和文件?
【发布时间】:2013-12-17 17:33:06
【问题描述】:

我需要开发 android 文件浏览器应用程序。我将文件名和文件路径都放入两个单独的 ArrayLists 中,然后分配给 ArrayAdapter。我使用 TextView 来显示文件名和文件夹名。文件资源管理器运行良好。现在我需要将文件夹图标添加到文件夹并将文件图标添加到文件。

不可能在布局文件中进行,因为所有文件夹和文件都在同一个 ArrayAdapter 中。我尝试在代码中执行此操作,但我必须将整个 ArrayList 作为参数提供给 ArrayAdapter,因此我无法分别对文件和文件夹进行分类。

如果有人对解决我的问题有任何建议,我会合适吗?

【问题讨论】:

    标签: android android-layout android-listview


    【解决方案1】:

    我正在解决同样的问题。

    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. (可选)使用比较器对适配器项进行排序,将它们与顶部的左侧目录进行比较。方法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;
          }
      

    当然你可以做一些更复杂的事情,比如为每种文件类型设置不同的图标,设置缩略图等。但原理是相似的。

    【讨论】:

    • 我还是有问题。在布局中,我只使用了一个 TextView。然后我将该布局作为参数提供给 ArrayAdapter。之后,我将其设置为 ListAdapter。那么正如你所说的如何将 ImageView 添加到布局中?
    猜你喜欢
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    • 2012-04-20
    • 2013-11-05
    • 1970-01-01
    • 2013-11-19
    相关资源
    最近更新 更多