Android 如何为大型ListView列表(+100项)定义图标
我一直在尝试创建一个ListView,并成功创建了一个。但是,我的ListView现在对列表中的每个项目使用相同的图标。当我搜索答案时,人们只是展示了少于10项的列表示例。但我的清单上有100多个项目 对于文本,我刚刚在string.xml中创建了一个字符串数组,并使用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); 但是我如何对图标做同样的事情呢?我是否可以
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;
}
}