ユーザーの選択に応じて ImageView の画像を変更できるスピナーを開発しようとしています。以下のようなコードの開発に成功しましたが、管理目的でより簡単に開発できる方法があれば教えてください。
私の考えは、それを次のような形式に発展させることです。
HK_map,R.drawable.map_101
UK_map,R.drawable.map_102
US_map,R.drawable.map_103
hashmap または arraylist を使用する必要がありますか? 改善方法についてアドバイスをいただけますか?よろしくお願いします。
私の現在のコード[更新]
package tool.mobile;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.Spinner;
public class SpinnerActivity extends Activity implements OnItemSelectedListener{
private ImageView view2;
private Spinner spinner2;
private ArrayAdapter adapter2;
private List<HashMap<String, String>> items;
private Bitmap snoop;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.bible_help_1);
spinner2 = (Spinner) findViewById(R.id.spinner1);
view2 = (ImageView) findViewById(R.id.imageView1);
items = fillMaps();
SimpleAdapter adapter=new SimpleAdapter(this,items,R.layout.bible_help_spinner,
new String[]{"name"},
new int[]{R.id.title});
spinner2.setAdapter(adapter);
spinner2.setOnItemSelectedListener(this);
spinner2.setVisibility(View.VISIBLE);
}
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
HashMap map = (HashMap)items.get(arg2);
String Drawing_1= map.get("Drawing").toString();
int resID = getResources().getIdentifier(Drawing_1, "raw", "tool.mobile");
Bitmap snoop= BitmapFactory.decodeStream(getResources().openRawResource(resID));
imageshow.setImageBitmap(snoop);
imageshow.setTag(resID);
imageshow.setTag(resID);
}
public void onNothingSelected(AdapterView<?> arg0) {
}
private List<HashMap<String, String>> fillMaps()
{
List<HashMap<String, String>> items = new ArrayList<HashMap<String,String>>();
HashMap<String,String> i = new HashMap<String,String>();
i.put("name","HK_map");
i.put("Drawing", "map_101");
items.add(i);
i = new HashMap<String,String>();
i.put("name","US_map");
i.put("Drawing", "map_102");
items.add(i);
return items;}
}
現在の問題
現在、いくつかの画像を表示した後、メモリ不足の問題に直面しています。問題を解決する方法についてアドバイスをいただけますか?