我创建了一个带有图标列表的对话框,即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);
但这会抛出没有找到资源的异常。
谢谢..
答案 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);