Android 如何将int转换为drawable?

Android 如何将int转换为drawable?,android,int,drawable,android-gridview,Android,Int,Drawable,Android Gridview,我创建了一个带有图标列表的对话框,即可绘制图标。我已经创建了一个网格视图来显示这些图标 现在我想获取所选图标并将其设置为“活动”中的图像视图 那么,如何将其转换为可绘制,以便在活动的图像视图上设置所选图标 对话框代码: private void showAlertDialog() { GridView gridView = new GridView(this); gridView.setGravity(Gravity.CENTER); gri

我创建了一个带有图标列表的对话框,即可绘制图标。我已经创建了一个网格视图来显示这些图标

现在我想获取所选图标并将其设置为“活动”中的图像视图

那么,如何将其转换为可绘制,以便在活动的图像视图上设置所选图标

对话框代码:

 private void showAlertDialog() {

        GridView gridView = new GridView(this);

        gridView.setGravity(Gravity.CENTER);
        gridView.setPadding(0,20,0,20);


        int[] mThumbIds = {
                R.drawable.roundicons05,R.drawable.roundicons08,R.drawable.roundicons02,R.drawable.roundicons03,R.drawable.roundicons04,
                R.drawable.roundicons16,R.drawable.roundicons37,R.drawable.roundicons06,R.drawable.roundicons07,R.drawable.roundicons05,
                R.drawable.roundicons09,R.drawable.roundicons10,R.drawable.roundicons11,R.drawable.roundicons12,R.drawable.roundicons13,
                R.drawable.roundicons14,R.drawable.roundicons15,R.drawable.roundicons16,R.drawable.roundicons17,R.drawable.roundicons18,
                R.drawable.roundicons19,R.drawable.roundicons20,R.drawable.roundicons22,
        };

        gridView.setAdapter(new ImageAdapter(CheckListActivity.this,mThumbIds));
        gridView.setNumColumns(4);
        gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                // do something here

             //   icon.setImageDrawable(id);
                imageId = position;
                Drawable drawable = getResources().getDrawable(imageId);
                icon.setImageDrawable(drawable);

            }
        });

        final MaterialDialog dialog = new MaterialDialog.Builder(CheckListActivity.this)
                .customView(gridView, false)
                .title("Select Icon")
                .negativeText("CANCEL")
                .canceledOnTouchOutside(true)
                .build();

        dialog.show();


    }
但这不会引发资源发现异常


谢谢..

不要将
位置
用作资源ID(它不是),而是在
位置处获取
mThumbIds
数组的一项。因此,您的代码应该如下所示:

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    // do something here
    imageId = mThumbIds[position];
    Drawable drawable = getResources().getDrawable(imageId);
    icon.setImageDrawable(drawable);

 }
public void onItemClick(AdapterView父视图、视图视图、整型位置、长id){
//在这里做点什么
imageId=mThumbIds[位置];
Drawable Drawable=getResources().getDrawable(imageId);
icon.setImageDrawable(可绘制);
}
我希望这有帮助

这条线

imageId = position;
应该是这样的

imageId = mThumbIds[position];
不推荐使用getDrawable(int)方法。 现在您可以轻松使用

    icon.setImageResource(imageId);
在科特林:

ContextCompat.getDrawable(context, resourceId)

imageId=position
应该是
imageId=mThumbIds[position]
您可以使用
parent.getItem(posiiton)
然后将其设置为drawablegot。。谢谢……:)@伊什玛勒玛基特拉
ContextCompat.getDrawable(context, resourceId)