RecyclerView显示并返回不同的值

时间:2016-07-19 06:04:53

标签: android listview android-recyclerview

我正在水平RecyclerView中显示复选框列表。

它显示{"Rd" , "Gr" , "Yl"}等值,但当用户选择任何此值时,它应返回{"RED" , "GREEN" , "YELLOW")

如何绑定显示和返回不同的这两个值?

我正在从R.string-arry

中获取显示值

我创建了另一个实际值的字符串数组,当用户选中checkboxes中的任何一个时,我得到该ID并将其替换为实际值。

例如如果用户选择了“Gr”,我得到ID = 1,然后用实际的字符串数组替换

但这仅适用于代码颜色和原始颜色的顺序。在我的应用程序中,我有时使用红色,绿色,蓝色或有时使用绿色,黄色,蓝色。所以,这对我没有帮助。

2 个答案:

答案 0 :(得分:2)

根据我的理解,你需要GR和Green,RD和Red等之间的映射。

您可以尝试使用Hashmap。

LPARAM lParam;
COPYDATASTRUCT* pcds = (COPYDATASTRUCT*)lParam;
if (WM_COPYDATA)
{
   LPCTSTR lpszString = (LPCTSTR)(pcds->lpData);
   printf("%s\n", lpszString);
} 
else return -1;
return 0; // success

然后您可以检索颜色代码的相应值:

 HashMap<String,String> colourMap = new HashMap<>();
 colourMap.put("GR","GREEN");
 colourMap.put("RD","RED");

答案 1 :(得分:0)

您可以使用HashMap将两个arrays绑定为键值对

public HashMap<String,String> bindColors() {
    HashMap<String,String> map = new HashMap<>();
    int length = orginalColors.length;
    for (int i = 0; i < length; i++) {
        map.put(orginalColors[i], codeColors[i]);            
    }
    return map;
}

用于获取代码中的颜色。

    HashMap<String, String> keyPair = bindColors();
    orginalColorsNewArray = keyPair.keySet().toArray(new String[keyPair.keySet().size()]);
    codeColorsNewArray = keyPair.values().toArray(new String[keyPair.values().size()]);

或使用.get()功能

   keyPair.get("YELLOW")

现在,您可以更轻松地通过id/position

访问代码

希望这会有所帮助。