我正在尝试从Android开发中的网格视图中获取选定的项目。这是我用来填充网格视图的drawable列表:

private static Integer[] iconlist = {
        R.drawable.food_icon, R.drawable.transport_icon, R.drawable.entertainment_icon,
        R.drawable.bill_icon, R.drawable.others_icon, R.drawable.salary_icon,
        R.drawable.investment_icon, R.drawable.bonus_icon, R.drawable.medication_icon,
        R.drawable.drinks_icon, R.drawable.car_icon, R.drawable.mask_icon,
        R.drawable.shopping_icon, R.drawable.lottery_icon, R.drawable.pet_icon,
        R.drawable.movie_icon, R.drawable.plant_icon, R.drawable.paint_icon,
};


以及点击侦听器上的gridview:

grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent,
                                View v, int position, long id) {

            Toast.makeText(getActivity(), "Grid Item " + (position + 1) + " Selected", Toast.LENGTH_LONG).show();
            int selected = position + 1;
            for(int i = 0; i < iconlist.length; i++){
                if(iconlist[i] == selected){

                }
            }
        }
    });


我根据点击次数获得了正确的整数位置。我想做的是基于所选的drawable,我想提取出字符串。

例如,当单击传输图标时,我试图从“ R.drawable.transport_icon”中获取“ transport_icon”字符串并将其存储为字符串。但是,我不确定该怎么做。

有任何想法吗?

最佳答案

首先从整数数组(ID)定义一个可绘制对象

Drawable drawable = context.getResources().getDrawable(iconlist[n]);


你可以得到这样的资源名称

String name = context.getResources().getResourceEntryName(ID);


此方法应返回您需要的内容。

10-07 16:05
查看更多