Android JSON listview

0

Cześć, mam problem, nie moge obsłużyć wyświetlenia danych w listview, w textview bez problemu wyświetlam pobrany tekst, gdy próbuje wyświetlić to aplikacja przestaje odpowiadać, kombinuje, czytam w internecie duzo i cały czas nie mam pomysłu w czym robię błąd.
załączam kod i błąd;

 public void onResponse(JSONObject response) {
                                                try {
                                                JSONArray students = response.getJSONArray("pracownicy");
                                                result.setText("");
                                                for (int i = 0; i < students.length(); i++) {
                                                    JSONObject student = students.getJSONObject(i);
                                                    String firstname1 = student.getString("firstname");
                                                    String lastname1 = student.getString("lastname");
                                                    String kat1 = student.getString("kat");
                                                    HashMap<String, String> map = new HashMap<String, String>();
                                                    map.put("firstname",firstname1);
                                                    map.put("lastname", lastname1);
                                                    map.put("age", age1);
                                                    mCommentList.add(map);
                                                    ListAdapter adapter = new SimpleAdapter(MainActivity.this, mCommentList,
                                                            R.layout.list_item, new String[] { firstname1,lastname1,age1}, new int[]
                                                            { R.id.editText, R.id.editText2, R.id.editText3 });
                                                    list.setAdapter(adapter);

i kod bladu

E/AndroidRuntime: FATAL EXCEPTION: main
                                                                            Process: com.rz.mysql, PID: 2821
                                                                            java.lang.NullPointerException
                                                                                at com.rz.mysq.MainActivity$1$1.onResponse(MainActivity.java:93)
                                                                                at com.rz.mysql.MainActivity$1$1.onResponse(MainActivity.java:76)
                                                                                at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:72)
                                                                                at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
                                                                                at android.os.Handler.handleCallback(Handler.java:733)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                at android.os.Looper.loop(Looper.java:136)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:5017)
                                                                                at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                at java.lang.reflect.Method.invoke(Method.java:515)
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
                                                                                at dalvik.system.NativeStart.main(Native Method)
 
0

Gdzie jest linia numer 93?
Popraw formatowanie kodu. Druga sprawa, do mapowania jsonów nie wykorzystuj JSONObject albo JSONArray tylko bibliotekę Gson albo Jackson.

0

Masz NPE. Więc pewnie źle parsujesz dane. Nie pokazałeś JSON'a, nie wiemy gdzie jest linia powodująca błąd.

0

93linia

  mCommentList.add(map);

76

final JsonObjectRequest jsonobjectrequest = new JsonObjectRequest(Request.Method.POST,
                                                showUrl, new Response.Listener<JSONObject>() { 
0

no to jest spora szansa że to mCommentList jest nullem.

0

Dzięki za wskazówkę, okazała się celna!;) teraz mam problem bo wyświetla mi tylko ostatnią pozycje z bazy danych

 show.setOnClickListener(new View.OnClickListener() {


            @Override
            public void onClick(View v) {
                final JsonObjectRequest jsonobjectrequest = new JsonObjectRequest(Request.Method.POST,
                        showUrl, new Response.Listener<JSONObject>() {


                    @Override
                    public void onResponse(JSONObject response) {
                        mCommentList.clear();
                        try {
                            JSONArray students = response.getJSONArray("artykuly");
                            //result.setText("");
                            HashMap<String, String> map = new HashMap<String, String>();

                            for (int i = 0; i < students.length(); i++) {

                                JSONObject student = students.getJSONObject(i);

                                String firstname1 = student.getString("firstname");
                                String lastname1 = student.getString("lastname");
                                String age1 = student.getString("age");

                                //result.append(firstname1 + " " + lastname1 + " " + age1 + "\n");
                               
                                map.put("firstname", firstname1);
                                map.put("lastname", lastname1);
                                map.put("age", age1);
                                mCommentList.add(map);

                            }
                                adapter = new SimpleAdapter(
                                        MainActivity.this, mCommentList, R.layout.list_item,
                                        new String[]{"firstname", "lastname", "age"},
                                        new int[]{R.id.id, R.id.name, R.id.address});

                                list.setAdapter(adapter);

                               
                                    }
                                }); 

bym musiał pętle wynieść po za onResponse?

0

hashmapa mialem przed pętlą, problem rozwiązany, chodzi wszystko ładnie, tylko problem mam z zawartoscia listview, zapisuje ją do hashmapa

HashMap m = (HashMap) list.getItemAtPosition(position);  

i zawartosc jset w formie {pierwsze = pierwsze, drugie = drugie, trzecie = trzecie}

 w jaki sposób rozdzielić ten tekst, żeby każdą wartość móc przypisać do stringa?
0
String a = m.get("pierwsze").toString(); 

rozwiazane:)

Jak jest lepiej, w głównej aktywności pobrać Nazwe uzytkownika + jego id i dopiero jak przejde do drugiej aktywności z jego danymi to pobrać jeszcze raz z bazy danych po numerze id wszystkie informacje? czy raz pobrać i w glownej aktywności wyświetlać tylko nazwe a w pamięci programu trzymać wszystkie informacje?

1 użytkowników online, w tym zalogowanych: 0, gości: 1