Android 如何为大型ListView列表(+100项)定义图标

Android 如何为大型ListView列表(+100项)定义图标,android,arrays,listview,Android,Arrays,Listview,我一直在尝试创建一个ListView,并成功创建了一个。但是,我的ListView现在对列表中的每个项目使用相同的图标。当我搜索答案时,人们只是展示了少于10项的列表示例。但我的清单上有100多个项目 对于文本,我刚刚在string.xml中创建了一个字符串数组,并使用 Resources res = getResources(); String[] list_of_names = res.getStringArray(R.array.names); 但是我如何对图标做同样的事情呢?我是否可以

我一直在尝试创建一个ListView,并成功创建了一个。但是,我的ListView现在对列表中的每个项目使用相同的图标。当我搜索答案时,人们只是展示了少于10项的列表示例。但我的清单上有100多个项目

对于文本,我刚刚在string.xml中创建了一个字符串数组,并使用

Resources res = getResources();
String[] list_of_names = res.getStringArray(R.array.names);
但是我如何对图标做同样的事情呢?我是否可以/应该像使用字符串数组一样在单独的文件中定义它们?我的图标在我的drawables文件夹中

此外,我是否应该为我的列表图标使用一组图像?还有别的办法吗

谢谢你的帮助

编辑:

CustomAdapter.java

类CustomAdapter扩展了ArrayAdapter{ CustomAdapterContext上下文,字符串[]列表名{ 超级上下文,R.layout.list\u item\u copy,listNames; } @凌驾 公共视图getViewint位置、视图转换视图、视图组父级{ LayoutFlater充气器=LayoutFlater.fromgetContext; 查看自定义视图=充气机。充气机。布局。列表\项目\副本,父项,false; String item=getItemposition; TextView TextView=TextView customView.findViewByIdR.id.name; ImageView ImageView=ImageView customView.findViewByIdR.id.icon; textView.setTextitem; imageView.setImageResourceR.drawable.icon_红色; 返回自定义视图; } } MainActivity.java

@凌驾 公共视图OnCreateViewLayoutFlater充气机、视图组容器、, 捆绑存储状态{ 视图根视图=充气机.充气机.layout.fragment\u main,容器,false; Resources res=getResources; String[]listNames=res.getStringArrayR.array.names; ArrayAdapter adapter=新的CustomAdaptergetActivity,listNames; ListView list=ListView rootView.findViewByIdR.id.nameList; list.setAdapteradapter; 返回rootView; } 这将为所有项目创建具有相同图标的列表,但图标应不同


如果有什么不同的话,我在新波士顿学习了本教程:

您可以在strings.xml中定义,以便:

<array name="drawerIcons">
    <item>@drawable/ic_action_design</item>
    <item>@drawable/ic_action_develop</item>
</array>

您应该更改arralist字符串。使用DrawerItems代码创建ArrayList如果需要多个textview和imageview,可以向该类添加更多元素。

如果它们都使用相同的图标,只需在LisView项目布局中设置即可。使用数组设置它的唯一原因是图标是否不同。如果有许多不同的图标,您可以创建一个方法来确定使用哪种类型的图标,并从GetView调用这些图标,我还编辑了我的帖子,将customAdapter.java的代码和MainActivity.javaI的部分代码包括在内。我不敢相信,我从来没有想过在strings.xml中定义这样的可绘图项,所以我这样做了。然而,我真的不知道在哪里添加您编写的代码。我试着摆弄了一会儿。我用customAdapter的原始代码和MainActivity文件中的相关代码编辑了我的文章。@traktor xml放在res/arrays.xml中file@zgc7009,在我的示例中,我使用的是strings.xml中的所有数组。OP应该使用arrays.xml而不是strings.xml
ArrayList<DrawerItem> drawerItems = new ArrayList<>();
    final String[] drawerTitles = getResources().getStringArray(R.array.drawer);
    final TypedArray drawerIcons = getResources().obtainTypedArray(R.array.drawerIcons);
    for (int i = 0; i < drawerTitles.length; i++) {
        drawerItems.add(new DrawerItem(drawerTitles[i], drawerIcons.getDrawable(i)));
    }
    public class DrawerItem {
    String title;
    Drawable icon;

    public DrawerItem(String title, Drawable icon) {
        this.title = title;
        this.icon = icon;
    }

    public String getTitle() {
        return title;
    }

    public Drawable getIcon() {
        return icon;
    }
}