通过HttpClient解析android中的数据
我正在解析来自URL的JSON数据。这是我的全部密码通过HttpClient解析android中的数据,android,json,Android,Json,我正在解析来自URL的JSON数据。这是我的全部密码 public class Main extends ActionBarActivity { public class GetCity extends AsyncTask<Void, Void, Void> { @Override protected void onPreExecute() { // TODO Auto-generated method stub progress=
public class Main extends ActionBarActivity {
public class GetCity extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
progress=new ProgressDialog(Main.this);
progress.setMessage("Please wait while the data is being loaded");
progress.show();
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
JSON js=new JSON();
JSONArray jarray=js.getDataFromUrl(url);
for(int i=0;i<jarray.length();i++){
try{
JSONObject jobj=jarray.getJSONObject(i);
HashMap<String, String> icity=new HashMap<String, String>();
String name=jobj.getString(CITY);
String id=jobj.getString(CITY_ID);
icity.put(CITY, name);
icity.put(CITY_ID, id);
city.add(icity);
}
catch(JSONException e){
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
if(progress.isShowing())
progress.dismiss();
super.onPostExecute(result);
}
}
ListView lv;
public static final String CITY="city_name";
public static final String CITY_ID="city_id";
String url="http://www.eventdads.com/api/?type=cities";
ArrayList<HashMap<String, String>> city;
ProgressDialog progress;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv=(ListView)findViewById(R.id.lv);
city=new ArrayList<HashMap<String,String>>();
new GetCity().execute();
MyAdapter adapter=new MyAdapter(Main.this, city);
lv.setAdapter(adapter);
}
}
MyAdapter类
公共类MyAdapter扩展了BaseAdapter{
语境;
数组列表值;
公共静态最终字符串CITY=“CITY\u name”;
公共静态最终字符串CITY\u ID=“CITY\u ID”;
公共MyAdapter(上下文,ArrayList arr){
this.context=context;
数值=arr;
}
@凌驾
public int getCount(){
//TODO自动生成的方法存根
返回值。size();
}
@凌驾
公共对象getItem(int arg0){
//TODO自动生成的方法存根
返回值.get(arg0);
}
@凌驾
公共长getItemId(int位置){
//TODO自动生成的方法存根
返回0;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
//TODO自动生成的方法存根
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
视图行视图=充气机。充气(R.layout.list\u行,父级,false);
TextView城市=(TextView)rowView.findViewById(R.id.city);
TextView id=(TextView)rowView.findViewById(R.id.cityid);
ImageView img=(ImageView)rowView.findViewById(R.id.img);
img.setImageResource(R.drawable.taylor);
city.setText(values.get(position.get(city));
id.setText(values.get(position.get(CITY_id));
返回行视图;
}
}
JSON数据显示在以下链接中:
我不知道是什么错误。但是活动没有显示任何数据 在catch子句中添加一条语句以打印堆栈跟踪并发布它。。e、 printStackTrace();完成了。我使用bluestack应用程序播放器作为模拟器。这有什么区别吗?把你遇到的一堆错误贴出来对不起,我不知道怎么做。你能告诉我怎么一步一步地做吗。这真的很有帮助。我刚刚开始使用android。在代码中添加上一条语句后,在运行应用程序时,查看eclipse中的Logcat,您会发现打印的错误日志,并检查该日志以获取帮助
public class JSON {
StringBuilder builder=new StringBuilder();
JSONArray jarray=null;
public JSONArray getDataFromUrl(String url){
try{
DefaultHttpClient client=new DefaultHttpClient();
HttpResponse response=null;
HttpEntity entity=null;
HttpGet get=new HttpGet(url);
response=client.execute(get);
StatusLine statusline=response.getStatusLine();
int code=statusline.getStatusCode();
if(code==200){
entity=response.getEntity();
InputStream is=entity.getContent();
BufferedReader bis=new BufferedReader(new InputStreamReader(is));
String msg;
//StringBuilder builder=new StringBuilder();
while((msg=bis.readLine())!=null){
builder.append(msg);
}
jarray=new JSONArray(builder.toString());
}
else {
Log.e("==>","Failed to Download file");
}
}
catch(Exception e){
e.printStackTrace();
}
return jarray;
}
}
public class MyAdapter extends BaseAdapter {
Context context;
ArrayList<HashMap<String, String>> values;
public static final String CITY="city_name";
public static final String CITY_ID="city_id";
public MyAdapter(Context context,ArrayList<HashMap<String, String>> arr){
this.context=context;
values=arr;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return values.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return values.get(arg0);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView=inflater.inflate(R.layout.list_row, parent, false);
TextView city=(TextView)rowView.findViewById(R.id.city);
TextView id=(TextView)rowView.findViewById(R.id.cityid);
ImageView img=(ImageView)rowView.findViewById(R.id.img);
img.setImageResource(R.drawable.taylor);
city.setText(values.get(position).get(CITY));
id.setText(values.get(position).get(CITY_ID));
return rowView;
}
}