0

ユーザーの選択に応じて 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;}



}

現在の問題

現在、いくつかの画像を表示した後、メモリ不足の問題に直面しています。問題を解決する方法についてアドバイスをいただけますか?

4

1 に答える 1

1

マップ名とその画像リソース値の両方に対応するキーと値のペア機能が提供されるHashMapため、使用する必要があると思います

于 2012-05-23T08:08:07.650 に答える