当前位置: 首页 > 知识库问答 >
问题:

如何向文件夹和文件添加图标?

阮鸿煊
2023-03-14

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

无法在布局文件中执行此操作,因为所有文件夹和文件都位于同一个ArrayAdapter中。我试图在代码中实现这一点,但我必须将整个ArrayList作为参数提供给ArrayAdapter,因此我无法单独对文件和文件夹进行分类。

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

共有1个答案

温峻熙
2023-03-14

我在解决同样的问题。

>

  • 使用一些ImageView来扩展列表行,您将在其中设置图标。示例文件\u行。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>
    

    ArrayAdapter中填充File之类的项,或者可以从中获取信息isDirectory()getFileName()

    (可选)使用comparator对适配器项进行排序,并将其与顶部的左目录进行比较。方法适配器。排序(比较器)

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

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

  •  类似资料:
    • 我尝试从Eclipse切换到IntellijIDEA。我有一个使用Git的项目,我想快速向.gitignore文件添加文件。在Eclipse中,我可以右键单击一个文件/目录,然后选择'Add to.gitignore'。 在IntelliJ IDEA中是否有类似的内容或者我必须手动编辑文件?

    • 我想将文件从我的>移到>文件夹。我尝试使用插件,但它只是将文件从复制到文件夹中的。但是在构建的中,文件在中不可用 我如何将我的启动文件移动到META-INF到ear>META-INF? 这是EAR的pom文件。 下面是project workspace屏幕抓取

    • 问题内容: Eclipse设置为在“ bin”处编译为构建目录。我有一个包含各种Java .class文件(预编译)的文件夹结构,我想在编译时将其复制到文件夹“ bin”中。 如何告诉Eclipse自动执行此操作? 问题答案: 项目属性中“ Java构建路径”下的“添加类文件夹…”和“添加外部类文件夹…”按钮似乎完全可以满足您的要求。

    • 当我选择时,会出现一个对话框来选择······ 如何将图像添加到文件夹?

    • 我想有一个地方来存储我的图像文件,以便在我的Java项目中使用(一个非常简单的类,它只是将图像加载到面板上)。我找遍了所有的地方,都找不到如何做到这一点。我该怎么做? 我已经尝试向项目添加一个新文件夹,向项目添加一个新类文件夹,向项目添加一个新源文件夹。无论我做什么,我总是得到一个。文件夹总是说它们在构建路径上,所以我不确定该怎么做。 编辑:对我起作用的东西是将文件夹添加为类文件夹,然后将其删除,

    • 我需要帮助在Android Studio中为我的项目创建'libs'文件夹(它不是在我的项目中自动生成的)。 当我想创建一个文件夹时,它给了我很多选项,比如AIDL、资产、JNI、Java、Java资源、Renderscripts和'res'文件夹。我选择了Res,并添加了一个libs文件夹,但它没有显示在左侧的文件结构中。