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

버스api xml파싱 관련 질문입니다

0 추천

대전 버스에서 api 키값을 받아서 일단 일부만 팟싱을 해보려고 하는데요

팟싱을 해오기까진 성고했는데 리스트뷰에 나오질 않는데요

고수님들 부탁드립니다

 

package com.example.bus;
 

import java.io.InputStream;

import java.util.ArrayList;
 
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
 
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ListView;
 
import com.example.bus.item.BusRouteNodeInfo;
import com.example.bus.item.adapter.BusAdapter;
import com.example.bus.parser.BusXMLParser;
 
public class MainActivity extends Activity {
 
private static final String TAG = "MainActivity";
 
ListView list;
ArrayList<BusRouteNodeInfo> busRoute = new ArrayList<BusRouteNodeInfo>();
BusAdapter adapter = null;
 
View.OnClickListener bHandler = new View.OnClickListener() {
 
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
passer();
}
};
 
void passer() {
new JobTask().execute();
 
}
 
static String url = "http://210.99.67.65/djapi/rest/14143ee9338cdbbb/busroutenodeinfo/";
 
class JobTask extends AsyncTask<Void, Void, Void> {
 
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
HttpClient client = null;
HttpGet request = null;
HttpResponse response = null;
int code = 0;
InputStream is = null;
 
try {
client = NetManager.getHttpClient();
request = NetManager.getGet(url);
response = client.execute(request);
code = response.getStatusLine().getStatusCode();
 
switch (code) {
case 200:
is = response.getEntity().getContent();
busRoute = BusXMLParser.parse(is);
adapter.setData(busRoute);
 
for (BusRouteNodeInfo i : busRoute) {
Log.v(TAG, i.toString());
}
break;
}
} catch (Exception e) {
Log.v(TAG, "error : " + e);
}
return null;
}
 
@Override
protected void onPostExecute(Void result) {
adapter.notifyDataSetChanged();
}
}
 
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.button1).setOnClickListener(bHandler);
list = (ListView) findViewById(R.id.listView1);
adapter = new BusAdapter(this, R.layout.item, busRoute);
list.setAdapter(adapter);
}
}
욧시 (170 포인트) 님이 2015년 1월 22일 질문

1개의 답변

0 추천
 
채택된 답변
일단 두 가지를 확인하셔야 할 것 같아요.

1. 정말 파싱이 잘 되었는지

-> 파싱한 결과를 담은 busRoute 변수에 데이터가 잘 담겨 있는지 확인

2. BusAdapter 의 getView 메소드에서 데이터를 확인 할 수 있는지

 

근데 답변 작성하다 보니...

리스트에 어댑터를 붙이고 난 이후, 클릭 버튼을 눌러야 데이터를 받아오고 파싱을 하는 것 같네요?

list.setAdapter(adapter); 하는 시점을 busRoute 에 데이터가 담긴 이후에 호출하거나

지금 상태에서 데이터 받은 후 notifyDataSetChanged() 를 호출해 보셔요~
가랑비 (10,530 포인트) 님이 2015년 1월 22일 답변
욧시님이 2015년 1월 22일 채택됨
...