- Forum-Beiträge: 89
31.08.2016, 14:10:56 via Website
31.08.2016 14:10:56 via Website
Guten Tag,
ich benutze die ExpandableListView mit diesem Adapter (http://www.androidhive.info/2013/07/android-expandable-list-view-tutorial/). In der MainActivity führt ein runnable jede Sekunde einen HTTP Request durch, wenn ein Wert zurück kommt, wird der als neues Item im Adapter angelegt und dann auf die ExpandableListView übertragen, der Code sieht so aus:
public void run() {
String returnString = "";
try {
URL u = new URL(t);
final HttpURLConnection connection = (HttpURLConnection)u.openConnection();
BufferedInputStream bis = new BufferedInputStream(connection.getInputStream());
byte[] content = new byte[1024];
int bytesRead = 0;
String strContent = "";
while((bytesRead = bis.read(content)) != -1){
strContent += new String(content,0,bytesRead);
}
returnString = strContent;
} catch (Exception e){
e.printStackTrace();
} finally {
try {
if(returnString.equals("0 rows returned")) {
handler.postDelayed(this,1000);
} else {
JSONArray jObj = new JSONArray(returnString);
JSONObject obj = jObj.getJSONObject(0);
String val = (String) obj.get("value");
String da = (String) obj.get("date");
listDataHeader = new ArrayList<String>();
listDataHeader.add(latestRequestID);
List<String> data = new ArrayList<String>();
data.add(val);
data.add(da);
listDataChild = new HashMap<String, List<String>>();
listDataChild.put(listDataHeader.get(listDataHeader.size() - 1), data);
listAdapter = new ExpandableListAdapter(ma, listDataHeader, listDataChild);
expandableListView.setAdapter(listAdapter);
}
} catch (Exception e) {
e.printStackTrace();
}
}
Das klappt soweit auch, wenn ich nun auf meinem Gerät das Item aufklappen will, stürzt die App mit dieser Fehlermeldung ab:
FATAL EXCEPTION: main
Process: com.example.standardbenutzer.mytestapplication, PID: 20862
java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
at com.example.standardbenutzer.mytestapplication.ExpandableListAdapter.getChildrenCount(ExpandableListAdapter.java:65)
at android.widget.ExpandableListConnector.refreshExpGroupMetadataList(ExpandableListConnector.java:563)
at android.widget.ExpandableListConnector.expandGroup(ExpandableListConnector.java:688)
at android.widget.ExpandableListView.handleItemClick(ExpandableListView.java:695)
at android.widget.ExpandableListView.performItemClick(ExpandableListView.java:655)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3231)
at android.widget.AbsListView$3.run(AbsListView.java:4165)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5624)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
Der Fehler passiert hier:
@Override
public int getChildrenCount(int groupPosition) {
return this._listDataChild.get(this._listDataHeader.get(groupPosition)).size();
}
Ich hab das auch schon mehrmals debugged, beim Debuggen bekomme ich die SubItems zurück, wenn ich dann F9 drücke (für "Resume Application") stürzt die App mit dem genannten Fehler ab. Teilweise fragt man sich bei Android / Java schon, ob die einen nur ärgern wollen.
Bin um jeden Tipp und Vorschlag dankbar.
Grüße