内部クラスの Hashmap 変数にアクセスしたい 外部クラス メソッドは、スピナーの項目選択リスナーを意味します。内部クラス内でハッシュマップを宣言し、内部クラスメソッド内でハッシュマップに値を割り当てています。外部クラスから setOnItemSelectedListener のキーを使用してハッシュマップ値にアクセスしていますが、ハッシュマップで null 値を取得しました。
外側のクラスでハッシュマップを静的にし、値を内側のクラスに入れ、外側のクラスのリスナーから再びアクセスしましたが、再びnull値を取得しました。誰かが別の解決策を持っている場合は教えてください。ここで少し混乱しています。どこが間違っているのかわかりません。どなたか解決策をお願いします。
以下は外部クラスと内部クラスです
public class ProjectDetailActivity extends SherlockActivity {
// declare hashmap.
HashMap<String, String> phaseIdKv = new HashMap<String, String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
new LoadPhaseData().execute(projId);
//create variable of inner class
final ProjectDetailActivity.LoadPhaseData inner = new ProjectDetailActivity().new LoadPhaseData();
//Listener for Phase spinner
projSpinnerPhase.setOnItemSelectedListener((OnItemSelectedListener) new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
int id = projSpinnerPhase.getSelectedItemPosition();
++id;
String p_id= inner.phaseIdKv.get(id); //Here I want to access inner class hashmap value
Log.v("hashmap value","-"+inner.phaseIdKv.get(id));//getting null
Toast.makeText(getApplicationContext(),"item-"+id+" item2"+item+"p_id"+p_id, Toast.LENGTH_LONG).show();
}
});
}
private class LoadPhaseData extends AsyncTask<String, Void, Void> {
@Override
protected Void doInBackground(String... params) {
-----
JSONArray phaseData = new JSONArray(jsonpPhaseList);
String [] phaseNo = new String[jsonpPhaseList.length()];
String phase;
String phaseId1;
if (phaseData.length() >0) {
for(int i =0;i<phaseData.length();i++){
JSONObject joPhasefromJa = phaseData.getJSONObject(i);
phase = joPhasefromJa.getString("phase_no")
phaseId1 = joPhasefromJa.getString("phase_id");
phaseIdKv.put(phase,phaseId1);
}
}
return null;
}