마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

mysql DB에서 읽어온 자료를 저장하고싶은데 자꾸 오류가 납니다. [closed]

0 추천
package com.example.tg.myapplication;

import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.OutputStreamWriter;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;

public class MainActivity extends AppCompatActivity {

    /**
     * ATTENTION: This was auto-generated to implement the App Indexing API.
     * See https://g.co/AppIndexing/AndroidStudio for more information.
     */
    String myJSON;
    StringBuilder a;
    private boolean DrawForArray[] = new boolean[242];
    private static final String TAG_RESULTS="result";
    private static final String TAG_ID = "StudentID";
    private static final String TAG_NUMBER = "SeatNumber";
    private static final String TAG_TIME ="Time";

    JSONArray peoples = null;
    ArrayList<HashMap<String, String>> personList;

    TextView text;
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text = (TextView)findViewById(R.id.tx);
        personList = new ArrayList<HashMap<String,String>>();
        getData("http://192.168.219.135/read.php");
    }
    protected void showList(){
        try {
            JSONObject jsonObj = new JSONObject(myJSON);
            peoples = jsonObj.getJSONArray(TAG_RESULTS);

            for(int i=0;i<peoples.length();i++){
                JSONObject c = peoples.getJSONObject(i);
                String id = c.getString(TAG_ID);
                String number = c.getString(TAG_NUMBER);
                String time = c.getString(TAG_TIME);
		a.append(number);
                HashMap<String,String> persons = new HashMap<String,String>();

                persons.put(TAG_ID,id);
                persons.put(TAG_NUMBER,number);
                persons.put(TAG_TIME,time);
                personList.add(persons);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
    public void getData(String url){
        class GetDataJSON extends AsyncTask<String, Void, String>{
            @Override
            protected String doInBackground(String... params) {
                String uri = params[0];
                BufferedReader bufferedReader = null;
                try {
                    URL url = new URL(uri);
                    HttpURLConnection con = (HttpURLConnection) url.openConnection();
                    StringBuilder sb = new StringBuilder();

                    bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));

                    String json;
                    while((json = bufferedReader.readLine())!= null){
                        sb.append(json+"\n");
                    }
                    return sb.toString().trim();
                }catch(Exception e){
                    return null;
                }
            }
            @Override
            protected void onPostExecute(String result){
                myJSON=result;
                showList();
            }
        }
        GetDataJSON g = new GetDataJSON();
        g.execute(url);
    }


E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.example.tg.myapplication, PID: 2489
                  java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.StringBuilder java.lang.StringBuilder.append(java.lang.String)' on a null object reference
                      at com.example.tg.myapplication.MainActivity.showList(MainActivity.java:66)
                      at com.example.tg.myapplication.MainActivity$1GetDataJSON.onPostExecute(MainActivity.java:103)
                      at com.example.tg.myapplication.MainActivity$1GetDataJSON.onPostExecute(MainActivity.java:79)
                      at android.os.AsyncTask.finish(AsyncTask.java:651)
                      at android.os.AsyncTask.-wrap1(AsyncTask.java)
                      at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
                      at android.os.Handler.dispatchMessage(Handler.java:102)
                      at android.os.Looper.loop(Looper.java:148)
                      at android.app.ActivityThread.main(ActivityThread.java:5417)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
DB에 StudentID, SeatNumber, Time 세개를 읽어왔는데요
세개다 읽어와서 데이터셋에 리스트뷰로 출력하는건 되는데
따로 SeatNumber를 저장해서 그림으로 표현 사용하고싶습니다.
근데 a.append(number); 이부분이 오류가 나는것같습니다.
private boolean DrawForArray[] = new boolean[242] 이 배열에 String값으로 넘어온 number를 '전부'(데이터가 여러개이므로) 숫자로 변환해서
저장하고  싶습니다. 어떻게하는지 도와주시면 정말 감사드리겠습니다.
긴글 읽어주셔서 감사합니다.
질문을 종료한 이유: 쓰레드 부분을 좀 더 공부해서 해결하였습니다.
호구삐꾸 (120 포인트) 님이 2016년 11월 8일 질문
호구삐꾸님이 2016년 11월 9일 closed
...