Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Hashmap的一行中插入字符串和可绘制的两项?_Java_Android_String_Hashmap_Android Drawable - Fatal编程技术网

Java 如何在Hashmap的一行中插入字符串和可绘制的两项?

Java 如何在Hashmap的一行中插入字符串和可绘制的两项?,java,android,string,hashmap,android-drawable,Java,Android,String,Hashmap,Android Drawable,我这里有个问题。我想在一个hashmap中放入一个字符串和一个drawable。因为我对java非常陌生,我不熟悉java语法和声明,也不知道如何找到解决internet问题的方法,这就是我来这里的原因。基本上,我的代码如下所示: private static String getAvModeText(String mode){ String avMode = mContext.getString(R.string.AVM_stand); HashMap<String,St

我这里有个问题。我想在一个hashmap中放入一个字符串和一个drawable。因为我对java非常陌生,我不熟悉java语法和声明,也不知道如何找到解决internet问题的方法,这就是我来这里的原因。基本上,我的代码如下所示:

private static String getAvModeText(String mode){
    String avMode = mContext.getString(R.string.AVM_stand);
    HashMap<String,String> mapAvM = new HashMap<String,String>();
    mapAvMode.put(TvFunctionID.AVM.AVM_STANDARD, mContext.getString(R.string.AVM_stand));
    mapAvMode.put(TvFunctionID.AVM.AVM_MOVIE, mContext.getString(R.string.AVM_mov));
    mapAvMode.put(TvFunctionID.AVM.AVM_MOVIE_THX,mContext.getString(R.string.AVM_movTHX));
    mapAvMode.put(TvFunctionID.AVMode.AVM_GAME, mContext.getString(R.string.AVM_game));
    mapAvMode.put(TvFunctionID.AVM.AVM_PC, mContext.getString(R.string.AVM_PC));
    mapAvMode.put(TvFunctionID.AVM.AVM_CUSTOM, mContext.getString(R.string.AVM_user));
    mapAvMode.put(TvFunctionID.AVM.AVM_DYNAMIC, mContext.getString(R.string.AVM_dyn));
    mapAvMode.put(TvFunctionID.AVM.AVM_DYNAMIC_FIXED, mContext.getString(R.string.AVM_dynFix));

    if(mapAvMode.containsKey(mode)) {
        avMode = mapAvMode.get(mode);
    }
    return avMode;
但是如果我这样做的话,会有一个错误,错误在getString()上,它是:

The method getString(int) in the type Context is not applicable for the arguments (String)
所以如果有人知道如何解决这个问题,我真的很感谢你的帮助。谢谢。

创建类似

public class Video {
  public final int title;
  public final int drawable;
  public Video(int title, int drawable) {
    this.title = title;
    this.drawable = drawable;
  }
}
然后使用
泛型类型创建映射

Map<String,Video> mapAvM = new HashMap<String,Video>();
Map mapAvM=new HashMap();

我了解您想要做什么,不幸的是,Java中的HashMap不能以这种方式工作。基本上,第一个参数是键,第二个是值。所以你应该这样做

HashMap<String, Drawable> mapAvM = new HashMap<String,Drawable>();
mapAvMode.put(TvFunctionID.AVM.AVM_STANDARD, mContext.getDrawable(R.drawable.ic_launcher));

它将返回您的可绘制内容。

什么是
mContext
此处,显示此声明
mContext
声明为
private static Context mContext=null。这段代码实际上很长。所以我只取了我想修改的部分。为什么是视频?我可以把
Drawable
改为吗?您说过“如何插入字符串和可绘制的两项”,所以我创建了包含两项的类。如果您不需要字符串,
Map=new HashMap()并通过
mapAvM.put(yourKey,mContext.getDrawable(drawableId))

HashMap<String, Drawable> mapAvM = new HashMap<String,Drawable>();
mapAvMode.put(TvFunctionID.AVM.AVM_STANDARD, mContext.getDrawable(R.drawable.ic_launcher));
  mapAvM.get(TvFunctionID.AVM.AVM_STANDARD);