3Dmajid
دوشنبه 13 بهمن 1393, 11:39 صبح
من دو تا کلاس نوشتم، به نام های MainActivity و HandleJSON و دارم سعی میکنم که بتونم محتویات یه فایل JSON رو به لیست اضافه میکنم (این محتویات شامل ایمیل های افراد مختلف هست).
مشکلم توی قسمت اد کردن آیتم ها به لیسته، با این که کدم درسته و توی MainActivity درست کار میکنه، اما وقتی توی کلاس HandleJSON ازش استفاده میکنم درست کار نمیکنه و ارور میده ! منم مجبورم توی HandleJSON استفاده کنم. واقعا نمیفهمم مشکلش کجاس !!
package com.example.jsonparser;
import java.io.Console;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONObject;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;
import android.R.integer;
import android.annotation.SuppressLint;
import android.app.LauncherActivity.ListItem;
import android.webkit.ConsoleMessage;
import android.widget.ArrayAdapter;
public class HandleJSON {
////////////////////////////////////////////////////////////////////////
//public variables
public volatile boolean parsingComplete = true;
//private variables
private String email = "";
private MainActivity mainActivity ;
private String urlString = null;
////////////////////////////////////////////////////////////////////////
public HandleJSON(String url){
this.urlString = url;
}
////////////////////////////////////////////////////////////////////////
public String getEmail(){
return email;
}
//////////////////////////////////////////////////////////////////////// @SuppressLint("NewApi")
public void readAndParseJSON(String in) {
try {
JSONObject mainJSON = new JSONObject(in);
JSONArray bugsArray = mainJSON.getJSONArray("bugs");
JSONObject firstObject = bugsArray.getJSONObject(0);
JSONArray cc_detail = firstObject.getJSONArray("cc_detail");
for(int i=0;i<=cc_detail.length()-1;i++)
{
JSONObject currentObject = cc_detail.getJSONObject(i);
email = currentObject.getString("email");
// mainActivity.listItems.add(email);
}
parsingComplete = false;
} catch (Exception e) {
e.printStackTrace();
}
}
////////////////////////////////////////////////////////////////////////
public void fetchJSON(){
Thread thread = new Thread(new Runnable(){
public void run() {
try {
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000 /* milliseconds */);
conn.setConnectTimeout(15000 /* milliseconds */);
conn.setRequestMethod("GET");
conn.setDoInput(true);
// Starts the query
conn.connect();
InputStream stream = conn.getInputStream();
String data = convertStreamToString(stream);
readAndParseJSON(data);
stream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
}
////////////////////////////////////////////////////////////////////////
static String convertStreamToString(java.io.InputStream is) {
java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
return s.hasNext() ? s.next() : "";
}
////////////////////////////////////////////////////////////////////////
}
package com.example.jsonparser;
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class MainActivity extends Activity {
////////////////////////////////////////////////////////////////////////
//public variables
public ArrayList<String> listItems=new ArrayList<String>();
public ArrayAdapter<String> adapter;
public ListView lView;
//private variables
private String url1 = "https://bugzilla.mozilla.org/rest/bug/35";
private HandleJSON obj;
private TextView tView;
////////////////////////////////////////////////////////////////////////
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tView = (TextView) findViewById(R.id.txtResults);
lView = (ListView)findViewById(R.id.lstTest); //define listview on the form
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,listItem s); //define adaptor for listview
lView.setAdapter(adapter); //set adaptor for listview
open();
}
////////////////////////////////////////////////////////////////////////
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
////////////////////////////////////////////////////////////////////////
public void open(){
obj = new HandleJSON(url1);
obj.fetchJSON();
while(obj.parsingComplete)
tView.setText("majid");
}
////////////////////////////////////////////////////////////////////////
}
مشکلم توی قسمت اد کردن آیتم ها به لیسته، با این که کدم درسته و توی MainActivity درست کار میکنه، اما وقتی توی کلاس HandleJSON ازش استفاده میکنم درست کار نمیکنه و ارور میده ! منم مجبورم توی HandleJSON استفاده کنم. واقعا نمیفهمم مشکلش کجاس !!
package com.example.jsonparser;
import java.io.Console;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONObject;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;
import android.R.integer;
import android.annotation.SuppressLint;
import android.app.LauncherActivity.ListItem;
import android.webkit.ConsoleMessage;
import android.widget.ArrayAdapter;
public class HandleJSON {
////////////////////////////////////////////////////////////////////////
//public variables
public volatile boolean parsingComplete = true;
//private variables
private String email = "";
private MainActivity mainActivity ;
private String urlString = null;
////////////////////////////////////////////////////////////////////////
public HandleJSON(String url){
this.urlString = url;
}
////////////////////////////////////////////////////////////////////////
public String getEmail(){
return email;
}
//////////////////////////////////////////////////////////////////////// @SuppressLint("NewApi")
public void readAndParseJSON(String in) {
try {
JSONObject mainJSON = new JSONObject(in);
JSONArray bugsArray = mainJSON.getJSONArray("bugs");
JSONObject firstObject = bugsArray.getJSONObject(0);
JSONArray cc_detail = firstObject.getJSONArray("cc_detail");
for(int i=0;i<=cc_detail.length()-1;i++)
{
JSONObject currentObject = cc_detail.getJSONObject(i);
email = currentObject.getString("email");
// mainActivity.listItems.add(email);
}
parsingComplete = false;
} catch (Exception e) {
e.printStackTrace();
}
}
////////////////////////////////////////////////////////////////////////
public void fetchJSON(){
Thread thread = new Thread(new Runnable(){
public void run() {
try {
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000 /* milliseconds */);
conn.setConnectTimeout(15000 /* milliseconds */);
conn.setRequestMethod("GET");
conn.setDoInput(true);
// Starts the query
conn.connect();
InputStream stream = conn.getInputStream();
String data = convertStreamToString(stream);
readAndParseJSON(data);
stream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
}
////////////////////////////////////////////////////////////////////////
static String convertStreamToString(java.io.InputStream is) {
java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
return s.hasNext() ? s.next() : "";
}
////////////////////////////////////////////////////////////////////////
}
package com.example.jsonparser;
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class MainActivity extends Activity {
////////////////////////////////////////////////////////////////////////
//public variables
public ArrayList<String> listItems=new ArrayList<String>();
public ArrayAdapter<String> adapter;
public ListView lView;
//private variables
private String url1 = "https://bugzilla.mozilla.org/rest/bug/35";
private HandleJSON obj;
private TextView tView;
////////////////////////////////////////////////////////////////////////
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tView = (TextView) findViewById(R.id.txtResults);
lView = (ListView)findViewById(R.id.lstTest); //define listview on the form
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,listItem s); //define adaptor for listview
lView.setAdapter(adapter); //set adaptor for listview
open();
}
////////////////////////////////////////////////////////////////////////
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
////////////////////////////////////////////////////////////////////////
public void open(){
obj = new HandleJSON(url1);
obj.fetchJSON();
while(obj.parsingComplete)
tView.setText("majid");
}
////////////////////////////////////////////////////////////////////////
}