具有来自服务器数据的不同图像的回收器视图
recycler view with different images from serverdata
我从我的服务器请求中获取了一个字符串,请求我的 recyclerview 中的一个项目,它给我 PDF Word 或图像。现在我想在我的 recyclerviewitem 中为每个字符串显示不同的图像。这是我的代码:
@Override
public void onBindViewHolder(ScriptViewHolder holder, int position) {
final ItemObject currentScript = scriptObjects.get(position);
holder.scriptName.setText(currentScript.getScriptName());
holder.scriptDate.setText(currentScript.getScriptDate());
holder.scriptUser.setText(currentScript.getScriptUser());
String whichformat = currentScript.getScriptFormat();
switch (whichformat) {
case "PDF":
imagename = "ic_picture_as_pdf_black_24dp.png";
case "Word":
imagename = "ic_insert_drive_file_black_24dp.png";
case "Image":
imagename = "ic_photo_library_black_24dp.png";
}
int resourceId = context.getResources().getIdentifier(imagename, null , null );
holder.scriptIcon.setImageDrawable(ContextCompat.getDrawable(context, resourceId));
我收到一个错误:
致命异常:主要
进程:com.ndlp.socialstudy,PID:3481
android.content.res.Resources$NotFoundException: 资源 ID #0x0
它指向我的回收适配器 class 和:
holder.scriptIcon.setImageDrawable(ContextCompat.getDrawable(context, resourceId));
你知道我做错了什么吗? switch里面的图片名是对的我已经查过了
我也试过了:
int resourceId = context.getResources().getIdentifier(imageName, "drawable" , context.getPackageName() );
亲切的问候
hellownero
你应该通过这种方式获取resourceId:
switch (whichformat) {
case "PDF":
imagename = "ic_picture_as_pdf_black_24dp";
case "Word":
imagename = "ic_insert_drive_file_black_24dp";
case "Image":
imagename = "ic_photo_library_black_24dp";
}
int resourceId = context.getResources().getIdentifier(imagename, "drawable", context.getPackageName());
您遇到此异常是因为您将 null
作为 defType
和 packageName
传递。您不需要将文件类型作为图像名称传递。
我从我的服务器请求中获取了一个字符串,请求我的 recyclerview 中的一个项目,它给我 PDF Word 或图像。现在我想在我的 recyclerviewitem 中为每个字符串显示不同的图像。这是我的代码:
@Override
public void onBindViewHolder(ScriptViewHolder holder, int position) {
final ItemObject currentScript = scriptObjects.get(position);
holder.scriptName.setText(currentScript.getScriptName());
holder.scriptDate.setText(currentScript.getScriptDate());
holder.scriptUser.setText(currentScript.getScriptUser());
String whichformat = currentScript.getScriptFormat();
switch (whichformat) {
case "PDF":
imagename = "ic_picture_as_pdf_black_24dp.png";
case "Word":
imagename = "ic_insert_drive_file_black_24dp.png";
case "Image":
imagename = "ic_photo_library_black_24dp.png";
}
int resourceId = context.getResources().getIdentifier(imagename, null , null );
holder.scriptIcon.setImageDrawable(ContextCompat.getDrawable(context, resourceId));
我收到一个错误:
致命异常:主要 进程:com.ndlp.socialstudy,PID:3481 android.content.res.Resources$NotFoundException: 资源 ID #0x0
它指向我的回收适配器 class 和:
holder.scriptIcon.setImageDrawable(ContextCompat.getDrawable(context, resourceId));
你知道我做错了什么吗? switch里面的图片名是对的我已经查过了
我也试过了:
int resourceId = context.getResources().getIdentifier(imageName, "drawable" , context.getPackageName() );
亲切的问候
hellownero
你应该通过这种方式获取resourceId:
switch (whichformat) {
case "PDF":
imagename = "ic_picture_as_pdf_black_24dp";
case "Word":
imagename = "ic_insert_drive_file_black_24dp";
case "Image":
imagename = "ic_photo_library_black_24dp";
}
int resourceId = context.getResources().getIdentifier(imagename, "drawable", context.getPackageName());
您遇到此异常是因为您将 null
作为 defType
和 packageName
传递。您不需要将文件类型作为图像名称传递。