【发布时间】:2017-09-23 02:29:53
【问题描述】:
我的项目的drawable文件夹中有大量资源,所有这些资源都显示在GridView中,现在当用户从GridView中选择图像时,图像应该加载并显示在屏幕上。问题是我的班级变得非常庞大,只需要做一个面向“if”的编程就可以知道点击了哪个图像。我相信有一种更有效的方式来使用HashMap 或类似的方式加载资源。
这里是一个只有一个菜单的小例子:
secondList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg20, View arg21, int arg22, long arg23) {
clearbackground2();
arg21.setBackgroundResource(R.drawable.fondoselected);
((TextView) arg21.findViewById(R.id.textoItem)).setTextColor(Color.parseColor("#8fb5e3"));
if (arg22 == 0) {
final int menuSecondSelected = arg22;
txtThirdTitleList.setText("Curvas");
thirdList.setAdapter(new SketchMenuSideAdapter((Activity) view.getContext(), getResources().getStringArray(R.array.viaCurva), getResources().obtainTypedArray(R.array.viaCurvaIcon), 3));
thirdList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> argTrh20, View argTrh21, int arg22, long arg2Trh3) {
if (arg22 == 0) {
addNewImage(menuSecondSelected, "1carril", null, null);
}
if (arg22 == 1) {
addNewImage(menuSecondSelected, "2carriles", null, null);
}
if (arg22 == 2) {
addNewImage(menuSecondSelected, "3carriles", null, null);
}
if (arg22 == 3) {
addNewImage(menuSecondSelected, "abierta1", null, null);
}
if (arg22 == 4) {
addNewImage(menuSecondSelected, "abierta2", null, null);
}
if (arg22 == 5) {
addNewImage(menuSecondSelected, "abierta3", null, null);
}
if (arg22 == 6) {
addNewImage(menuSecondSelected, "abierta4", null, null);
}
if (arg22 == 7) {
addNewImage(menuSecondSelected, "abierta5", null, null);
}
if (arg22 == 8) {
addNewImage(menuSecondSelected, "cerrada1", null, null);
}
if (arg22 == 9) {
addNewImage(menuSecondSelected, "cerrada2", null, null);
}
if (arg22 == 10) {
addNewImage(menuSecondSelected, "cerrada3", null, null);
}
if (arg22 == 11) {
addNewImage(menuSecondSelected, "cerrada4", null, null);
}
if (arg22 == 12) {
addNewImage(menuSecondSelected, "cerrada5", null, null);
}
if (arg22 == 13) {
addNewImage(menuSecondSelected, "carril1", null, null);
}
if (arg22 == 14) {
addNewImage(menuSecondSelected, "carril2", null, null);
}
if (arg22 == 15) {
addNewImage(menuSecondSelected, "carril3", null, null);
}
if (arg22 == 16) {
addNewImage(menuSecondSelected, "carril4", null, null);
}
if (arg22 == 17) {
addNewImage(menuSecondSelected, "carril5", null, null);
}
if (arg22 == 18) {
addNewImage(menuSecondSelected, "carril6", null, null);
}
}
});
}
只有这种菜单大约有 6000 行,有人可以提出更好的方法吗?
【问题讨论】:
标签: java android gridview imageview