Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过HttpClient解析android中的数据_Android_Json - Fatal编程技术网

通过HttpClient解析android中的数据

通过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=

我正在解析来自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=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;
}

}