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를 '전부'(데이터가 여러개이므로) 숫자로 변환해서
저장하고 싶습니다. 어떻게하는지 도와주시면 정말 감사드리겠습니다.
긴글 읽어주셔서 감사합니다.