안녕하세요, 개발 초보입니다.
버스 정류장의 노선도 위에 버스의 현재 위치를 시각화 하는 나타내는 기능을 구현하고 있습니다.
API와 리사이클러뷰를 이용하여 버스 노선도의 정류장들을 불러왔고 다른 API를 이용하여 각각 정류장마다 버스가 있는지 없는지를 검색하여 검색 결과가 존재할 때 해당 정보를 Textview에 나타내는 방법으로 설계하였습니다.
버스 정류장의 개수가 버스마다 다른지라 정류장들을 불러온 리사이클러뷰의 어댑터에서 다른 API를 검색하려고 합니다. 링크 연동은 잘 되나 결과가 Textview에 나타나지 않습니다.
해결 방법을 아시는 분이 계신가요?
BusRouteMapMyAdapter.java
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.tv1.setText(mList.get(position).getStationNm());
holder.tv_routId.setText(mList.get(position).getBusRouteId());
holder.tv_seq.setText(mList.get(position).getSeq());
busRouteId = mList.get(position).getBusRouteId();
ord = mList.get(position).getSeq();
holder.tv_routId.setText(busRouteId);
holder.tv_seq.setText(ord);
holder.tv2.setVisibility(View.VISIBLE);
holder.tv3.setVisibility(View.VISIBLE);
requestUrl = "http://ws.bus.go.kr/api/rest/buspos/getLowBusPosByRouteSt?serviceKey="+dataKey+"&busRouteId=100100110&startOrd="+ord+"&endOrd="+ord;
try{
boolean b_plainNo = false;
boolean b_vehId = false;
boolean b_stopFlag = false;
boolean b_busType = false;
boolean b_lastStnId = false;
boolean b_congetion = false;
URL url = new URL(requestUrl);
InputStream is = url.openStream();
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser parser = factory.newPullParser();
parser.setInput(new InputStreamReader(is,"UTF-8"));
int eventType = parser.getEventType();
while(eventType != XmlPullParser.END_DOCUMENT){
switch (eventType){
//case XmlPullParser.START_DOCUMENT:
// list=new ArrayList<LowBusRouteItem>();
// break;
//case XmlPullParser.END_DOCUMENT:
// break;
//case XmlPullParser.END_TAG:
// if(parser.getName().equals("itemList")&&item!=null){
// list.add(item);
// }
// break;
case XmlPullParser.START_TAG:
// if(parser.getName().equals("itemList")){
// item = new LowBusRouteItem();
// }
if(parser.getName().equals("busType"))
b_busType = true;
if(parser.getName().equals("congetion"))
b_congetion = true;
if(parser.getName().equals("lastStnId"))
b_lastStnId = true;
if(parser.getName().equals("plainNo"))
b_plainNo = true;
if(parser.getName().equals("stopFlag"))
b_stopFlag = true;
if(parser.getName().equals("vehId"))
b_vehId = true;
break;
case XmlPullParser.TEXT:
if(b_busType){
//item.setBusType(parser.getText());
//holder.tv2.setText(parser.getText());
b_busType=false;
}
else if(b_congetion){
//item.setCongetion(parser.getText());
holder.tv3.setText(parser.getText());
b_congetion=false;
}
else if(b_lastStnId){
//item.setLastStnId(parser.getText());
b_lastStnId=false;
}
else if(b_plainNo){
//item.setPlainNo(parser.getText());
b_plainNo=false;
}
else if(b_stopFlag){
//item.setStopFlag(parser.getText());
b_stopFlag=false;
}else if(b_vehId){
//item.setVehId(parser.getText());
b_vehId=false;
}
break;
}
eventType = parser.next();
}
}catch (Exception e){
e.printStackTrace();
}