如何在Android ListView中为菜单项创建图标?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Android ListView中为菜单项创建图标?相关的知识,希望对你有一定的参考价值。

我正在使用ListView来显示我的应用程序的主屏幕。 主屏幕基本上是一个menu进入应用程序的不同部分。目前,我有ListView,其内容以onCreate方法编程方式添加。

以下是执行此操作的代码段:

String[] mainItems = {
    "Inbox", "Projects", "Contexts", "Next Actions"
}

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.main);

    setListAdapter(new ArrayAdapter<String>(
            this, android.R.layout.simple_list_item_1, mainItems));
    registerForContextMenu(getListView());
}

所以菜单基本上只是一堆节点,文本包含在mainItems数组中。我知道我可以创建一个包含ImageView和TextView的XML布局(即R.layout.mainMenu_item),但我不确定如何设置ImageView的图标。我已经看到有一个setImageResouce(int resId)方法,但是在使用ArrayAdapter生成时使用它的方法让我望而却步。有一个更好的方法吗?

答案

我通常为ListView做的是通过扩展方便的BaseAdapter类来实现我自己的Adapter。您将实现的抽象方法之一是getView(),如前面提到的海报。从那里你可以膨胀一个包含ImageView的布局,使用findViewById获取它的引用,并将图像设置为你添加到资源中的任何drawable。

public View getView(int position, View convertView, ViewGroup parent) {

    View row = inflater.inflate(R.layout.menu_row, null);

     ImageView icon = (ImageView) row.findViewById(R.id.icon);
     icon.setImageResource(..your drawable's id...);

     return view;
}
另一答案

来自ArrayAdapter的Google文档。

要使用TextViews之外的其他内容来显示数组,例如ImageViews,或者除了toString()之外还有一些数据填充视图,覆盖getView(int,View,ViewGroup)以返回所需的视图类型。

以上是关于如何在Android ListView中为菜单项创建图标?的主要内容,如果未能解决你的问题,请参考以下文章

Android:如何在 ListView 的列表项中为 Button 设置 onClick 事件

如何在 Android 的 LISTVIEW 中为每个原​​始图像添加不同的图像?

如何在xamarin native android中的listview中为项目着色

如何在 android 的选项菜单中为 chromecast 添加自定义投射按钮?

我在 android 版本 4.3 中为 listview 跨应用程序使用 listview 添加/删除页脚?

在android中,当我按了listview中的一个子项时,利用ContextMenu弹出菜单,那怎么获取这个子项的数据呢?