I add the map to the list and then update the array adapter. This worked fine before, but now when I use the addItem () method from two different methods, it returns NullPointer. Hope my code clarifies what I'm saying:
SimpleAdapter adapter; List<HashMap<String, String>> painItems = new ArrayList<HashMap<String, String>>(); ListView listthings; int[] to; String[] from; String painLevelString, timeOfPainString, textTreatmentString, painLocation, row1, row2, name; OnCreate(){ if(getIntent().getStringExtra("newPainLevel")!= null){ createNewEditedEntry(); } adapter = new SimpleAdapter(this, painItems, R.layout.mylistlayout, from, to); listthings.setAdapter(adapter); } private void createNewEditedEntry() { String newPainLevel = this.getIntent().getStringExtra("newPainLevel"); String newPainTime =this.getIntent().getStringExtra("newPainTime"); String newTreatment =this.getIntent().getStringExtra("newTreatment"); painLevelString = newPainLevel; timeOfPainString = newPainTime; textTreatmentString = newTreatment; row1 = "sample1"; row2 = "sample2"; addItem(); //painItems.remove(getIntent().getStringExtra("position")); //adapter.notifyDataSetChanged(); } @Override // on the activityresult,get the string extra, then add the item to the list protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == 1) { row1 = data.getStringExtra("com.painLogger.row1"); row2 = data.getStringExtra("com.painLogger.row2"); painLevelString = data.getStringExtra("com.painLogger.painLevel"); painLocation = data.getStringExtra("painLocation"); timeOfPainString = data.getStringExtra("com.painLogger.painTime"); textTreatmentString = data .getStringExtra("com.painLogger.treatment"); addItem(); } } // to add the item, put it in the map, and add the map into the list private void addItem() { HashMap<String, String> map = new HashMap<String, String>(); map.put("row_1", row1); map.put("row_2", row2); map.put("row_3", painLevelString); map.put("row_4", painLocation); map.put("row_5", timeOfPainString); map.put("row_6",textTreatmentString); painItems.add(map); adapter.notifyDataSetChanged(); //Null Pointer **HERE** }
To be clear, createNewEditedEntry () and onActivityResult () are never called at the same time and never collide. These are two completely different events. It only worked with OnActivityResult, but now when I use CreateNewEditedEntry (), it stops working. I also checked and made sure that none of the lines that I get from my intention matter.
source share