如何将int转换为drawable?

时间:2016-05-25 14:04:01

标签: android int drawable android-gridview

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

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

那么如何将其转换为drawable,以便我可以在活动的图像视图中设置所选图标?

对话框代码:

 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();


    }

我试过这个

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

但这会抛出没有找到资源的异常。

谢谢..

4 个答案:

答案 0 :(得分:12)

而不是使用position作为ResourceID(它不是),而是在mThumbIds获取positions数组的项目。所以你的代码应该是这样的:

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);

 }

我希望这会有所帮助。

答案 1 :(得分:1)

在科特林中:

ContextCompat.getDrawable(context, resourceId)

答案 2 :(得分:0)

这一行

&[u8]

应该是这样的

use std::{fs,
          io,
          path::{Path, PathBuf}};

pub fn read_filenames_from_dir<P>(path: P) -> Result<Vec<PathBuf>, io::Error>
where
    P: AsRef<Path>,
{
    fs::read_dir(path)?
        .into_iter()
        .map(|x| x.map(|entry| entry.path()))
        .collect()
}

fn main() {
    println!("{:?}", read_filenames_from_dir("/etc"));
}

答案 3 :(得分:0)

不推荐使用方法getDrawable(int)。 现在您可以轻松使用

    icon.setImageResource(imageId);