package kr.co.bitgo;
import! android.app.Activity;
import! android.content.Intent;
import! android.os.Bundle;
import! android.view.View;
import! android.view.View.OnClickListener;
import! android.widget.ImageButton;
public class CouponDiscountActivity extends Activity implements OnClickListener {
/** Called when the activity is first created. */
ImageButton ib;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ib=(ImageButton)findViewById(R.id.imagebutton);
ib.setOnClickListener(this);
}
@Override
public void onClick(View arg0) {
//새로운 클래스를 선언
Intent intent=new Intent().setClass(CouponDiscountActivity.this, CouponKorea.class);
startActivity(intent);
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
package kr.co.bitgo;
import! android.app.ListActivity;
import! android.content.Intent;
import! android.os.Bundle;
import! android.view.View;
import! android.widget.AdapterView;
import! android.widget.AdapterView.OnItemClickListener;
import! android.widget.ArrayAdapter;
import! android.widget.ListView;
public class CouponKorea extends ListActivity implements OnItemClickListener{//ListActivity 는 ListView 가 탑재되어있기에 별도의 xml 파일이 필요없다
private String[] korea={"서울","경기도","강원도","충청북도","충청남도","전라북도","전라남도","경상북도","경상남도","제주도"};
public static int index;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(this, R.layout.korealistitem, korea));
ListView lv=getListView();
lv.setTextFilterEnabled(true);// 필터링
lv.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
// TODO Auto-generated method stub
index=position; // 이벤트 발생시 몇번째 뷰가 눌려졌는지 알기위함
Intent intent=new Intent().setClass(CouponKorea.this, CouponKoreaArea.class);
startActivity(intent);
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
package kr.co.bitgo;
import! java.io.InputStream;
import! java.net.URL;
import! java.util.Vector;
import! org.xmlpull.v1.XmlPullParser;
import! org.xmlpull.v1.XmlPullParserFactory;
import! android.app.Activity;
import! android.app.ListActivity;
import! android.content.Intent;
import! android.os.Bundle;
import! android.util.Log;
import! android.util.Xml;
import! android.view.LayoutInflater;
import! android.view.View;
import! android.view.ViewGroup;
import! android.widget.AdapterView;
import! android.widget.AdapterView.OnItemClickListener;
import! android.widget.ArrayAdapter;
import! android.widget.ImageView;
import! android.widget.ListView;
import! android.widget.TextView;
public class CouponKoreaArea extends ListActivity implements OnItemClickListener{// 할인점 리스트
// 하나의 리스트 뷰에 보여질 제목과 금액을 저장하기 위한 저장소
Vector<String> titlevector;
Vector<String> pricevector;
Vector<KoreaBean> beanvector;
// XML 데이터를 가져올 접속 주소
String Uri="http://192.192.192.192:8080/cs/koreacoupon.xml";
URL couponurl;
String tagName, title="", address="", phone="", url="", price="", wido="", kyungdo="", contents="";
//지역을 저장하는 변수선언
String area, koreaArea;
int index;
private KoreaBean kb;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
index=CouponKorea.index;
// 각지역의 이름을 저장
if(index==0)area="seoul";
else if(index==1)area="Gyeonggido";
else if(index==2)area="GangWon";
else if(index==3)area="Chungcheongbukdo";
else if(index==4)area="ChoongchungNamDo";
else if(index==5)area="Jeonbuk";
else if(index==6)area="Jeollanamdo";
else if(index==7)area="Gyeongsangbukdo";
else if(index==8)area="Daegu";
else if(index==9)area="Jejudo";
//XML 데이터를 가져오는 작업
getData();
//리스트 뷰에 데이터를 붙임
setListAdapter(new MyListAdapter(this));// ArrayAdapter 상속받아서 나만의 Adapter를 재정의 해줘야한다.
ListView lv=getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(this);
}
private void getData() {
// 저장공간 객체 생성
titlevector=new Vector<String>();
pricevector=new Vector<String>();
beanvector=new Vector<KoreaBean>();
try {
//SAX 방식으로
XmlPullParserFactory factory=XmlPullParserFactory.newInstance();//내부에 스테틱메서드가 있어서 newInstance로 만든다
factory.setNamespaceAware(true);
XmlPullParser xpp=factory.newPullParser();
couponurl=new URL(Uri);
InputStream in=couponurl.openStream();
xpp.setInput(in, "utf-8");
int eventtype=xpp.getEventType();
while(eventtype!=XmlPullParser.END_DOCUMENT){
if(eventtype==XmlPullParser.START_TAG){
tagName=xpp.getName();
if(tagName.equals("Item")){
koreaArea=xpp.getAttributeVal!ue(0);
}
}else if(eventtype==XmlPullParser.TEXT){
if(koreaArea!=null){
if(koreaArea.equals(area)){
if(tagName.equals("Title"))title+=xpp.getText();
else if(tagName.equals("Address"))address+=xpp.getText();
else if(tagName.equals("Phone"))phone+=xpp.getText();
else if(tagName.equals("Url"))url+=xpp.getText();
else if(tagName.equals("Wido"))wido+=xpp.getText();
else if(tagName.equals("Kyungdo"))kyungdo+=xpp.getText();
else if(tagName.equals("Contents"))contents+=xpp.getText();
else if(tagName.equals("Price"))price+=xpp.getText();
}
}
}else if(eventtype==XmlPullParser.END_TAG){
tagName=xpp.getName();
if(tagName.equals("Item")){
if(koreaArea.equals(area)){
kb=new KoreaBean();
titlevector.add(title);
pricevector.add(price);
kb.setTitle(title);
kb.setAddress(address);
kb.setPhone(phone);
kb.setUrl(url);
kb.setWido(wido);
kb.setKyungdo(kyungdo);
kb.setContents(contents);
kb.setPrice(price);
beanvector.add(kb);
title=""; address=""; phone="";url="";price=""; wido=""; kyungdo=""; contents="";
}
}
}
eventtype=xpp.next();
}
} catch (Exception e) {
// TODO: handle exception
}
}
//사용자 정의 어댑터 클래스
class MyListAdapter extends ArrayAdapter{
Activity con;//MyListAdapter 에서 ArrayAdapter에게 값을 넘겨주는 생성자
public MyListAdapter(Activity context) {
super(context, R.layout.koreaarealistitem, titlevector);
con=context;
}
// 하나의 row(리스트의 한줄)을 디자인해서 리턴해주는 핵심 메소드
//ArrayAdapter 가 가지고있는 메소드 getView 를 재정의 해주면된다(내가 원하는 형태로 작업하기위해)
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// 레이아웃을 담당하는 메니저가있다 -> 레이아웃인플레이터
LayoutInflater inflater=con.getLayoutInflater();// Activity에서 가져온다. 레이아웃을 핸들링하기위함
View tmprow=inflater.inflate(R.layout.koreaarealistitem, null);
TextView label1=(TextView) tmprow.findViewById(R.id.label1);// 가상의 아버지(tmprow)를 통해서 하나의 label1을 가져온다
label1.setText("할인점명 :"+titlevector.get(position));
TextView label2=(TextView) tmprow.findViewById(R.id.label2);
label2.setText("가 격 :"+pricevector.get(position));
// 이미지를 넣는 작업, 할인점명과 이미지명이 같으면 넣어라
if(position%3==0){
ImageView image=(ImageView) tmprow.findViewById(R.id.image);
image.setImageResource(R.drawable.foodc);
}else if(position%3==1){
ImageView image=(ImageView) tmprow.findViewById(R.id.image);
image.setImageResource(R.drawable.foodd);
}else if(position%3==2){
ImageView image=(ImageView) tmprow.findViewById(R.id.image);
image.setImageResource(R.drawable.foode);
}
return tmprow;
}
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
index=arg2;
Intent intent=new Intent().setClass(CouponKoreaArea.this, CouponKoreaAreaDetail.class);
startActivity(intent);
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
리스트뷰에서 하나의 리스트를 클릭했을때 상세보기 기능을 성정
package kr.co.bitgo;
import! android.app.Activity;
import! android.content.Intent;
import! android.os.Bundle;
import! android.view.View;
import! android.view.View.OnClickListener;
import! android.widget.Button;
import! android.widget.TextView;
public class CouponKoreaAreaDetail extends Activity implements OnClickListener{
TextView title, phone, address, url, price, contents;
Button btn;
KoreaBean kbean;
int index;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.detail);
title=(TextView) findViewById(R.id.title);
address=(TextView) findViewById(R.id.address);
phone=(TextView) findViewById(R.id.phone);
url=(TextView) findViewById(R.id.url);
price=(TextView) findViewById(R.id.price);
contents=(TextView) findViewById(R.id.contents);
btn=(Button) findViewById(R.id.map);
index=CouponKoreaArea.index;
//하나의 정보를 가져옴
kbean=CouponKoreaArea.beanvector.get(index);
title.setText("점포명 : "+kbean.getTitle());
address.setText("주소 : "+kbean.getAddress());
phone.setText("전화번호 : "+kbean.getPhone());
url.setText("웹사이트 : "+kbean.getUrl());
price.setText("할인금액 : "+kbean.getPrice());
contents.setText("상세정보 :"+kbean.getContents());
btn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Intent intent=new Intent().setClass(CouponKoreaAreaDetail.this, CouponKoreaAreaMap.class);
startActivity(intent);
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
MapActivity 설정 자신의 위치와 맛집위치를 설정하는 Activity
package kr.co.bitgo;
import! java.util.List;
import! android.content.Context;
import! android.graphics.drawable.Drawable;
import! android.location!.Location!
import! android.location!.Location!Listener;
import! android.location!.Location!Manager;
import! android.os.Bundle;
import! com.google.android.maps.GeoPoint;
import! com.google.android.maps.MapActivity;
import! com.google.android.maps.MapController;
import! com.google.android.maps.MapView;
import! com.google.android.maps.OverlayItem;
import! com.google.android.maps.Overlay;
public class CouponKoreaAreaMap extends MapActivity implements LocationListener{
MapController mc;
MapItemizedOverlay mapoverlay;
List<Overlay> overlayvector;
int index;
KoreaBean kbean;
Double wido, kyungdo;
MapView mapview;
Drawable dw;
float[] result=new float[3];
String title;
@Override
protected boolean isRouteDisplayed() {
return false;
}
@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
setContentView(R.layout.map);
kbean=CouponKoreaArea.beanvector.get(CouponKoreaArea.index);
wido=Double.parseDouble(kbean.getWido());
kyungdo=Double.parseDouble(kbean.getKyungdo());
title=kbean.getTitle();
mapview=(MapView) findViewById(R.id.mapview);
mapview.setBuiltInZoomControls(true);
mapview.setSatellite(true);
mc=mapview.getController();
dw=getResources().getDrawable(R.drawable.pin); //내위치에 표시될 이미지 설정
mapoverlay=new MapItemizedOverlay(dw, this);
//GPS로부터 자신의 위치 수신받음
LocationManager lm=(LocationManager) getSystemService(Context.LOCATION!_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, this);
}
@Override
public void onLocationChanged(Location location) {
//자신의 위치로 이동
if(location!=null){
GeoPoint point=new GeoPoint((int)(location.getLatitude()*1000000), (int)(location.getLongitude()*1000000));
mc.animateTo(point);
mc.setZoom(15);
overlayvector=mapview.getOverlays();
overlayvector.remove(overlayvector); //초기화해준다.
mapoverlay.addOverlay(new OverlayItem(point, "현위치", "방가방가"));
overlayvector.add(mapoverlay);
//거리구하는 공식
Location.distanceBetween(location.getLatitude(), location.getLongitude(), wido, kyungdo, result);
int distance=(int)result[0];
//할인점위치
dw=getResources().getDrawable(R.drawable.pin);
mapoverlay=new MapItemizedOverlay(dw, this);
GeoPoint p=new GeoPoint((int)(wido*1000000), (int)(kyungdo*1000000));
mapoverlay.addOverlay(new OverlayItem(p, title, "내위치로부터 "+distance+"M에 있습니다"));
overlayvector.add(mapoverlay);
}
}
@Override
public void onProviderDisabled(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
// TODO Auto-generated method stub
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////
package kr.co.bitgo;
import! java.util.ArrayList;
import! android.app.Alert!Dialog;
import! android.content.Context;
import! android.graphics.drawable.Drawable;
import! com.google.android.maps.ItemizedOverlay;
import! com.google.android.maps.OverlayItem;
public class MapItemizedOverlay extends ItemizedOverlay {
// 여러개의 이미지(앞핀->OverlayItem)를 저장하는 객체를 선언
ArrayList<OverlayItem> overlays=new ArrayList<OverlayItem>(); //overlays-> 위도와 경도 정보
Context ctx;
public MapItemizedOverlay(Drawable defaultMarker, Context ctx) { //MapItemizedOverlay(이미지, 내용)을 받는다
// Context ctx -> Dialog 때문에 생성
super(boundCenterBottom(defaultMarker)); // 앞핀 위치를 센터 아래에설정 -> boundCenterBottom
this.ctx=ctx;
// TODO Auto-generated constructor stub
}
// ArrayList에 이미지를 더해주는(추가)메서드
public void addOverlay(OverlayItem overlay){
overlays.add(overlay);
populate(); //ArrayList에 저장되었다는걸 알려줌 -> populate
}
// callBack 메서드
@Override
protected OverlayItem createItem(int i) { //ArrayList 들어있는값이 순서적으로 호출해서 화면에 그림을 그린다.
// ArrayList에 저장된 overlay를 빼오는 역활, size() 정보를 보고 빼옴
return overlays.get(i);
}
@Override
public int size() {
// ArrayList 의 사이즈
return overlays.size();
}
@Override
protected boolean onTap(int index) { // overlay의 표시지점에 대한 정보를 출력
// 해당번지에 해당되는 overlay값을 가져옴
OverlayItem item=overlays.get(index); // OverlayItem -> 타이틀과 메세지를 설정
Alert!Dialog.Builder dlg=new Alert!Dialog.Builder(ctx);//
dlg.setTitle(item.getTitle());
dlg.setMessage(item.getSnippet()); //getSnippet -> 메세지
dlg.show();
return true;
}
}
'내가 하는일 > JAVA' 카테고리의 다른 글
| jquery 기본 함수 정의 (0) | 2011.12.15 |
|---|---|
| 안드로이드 인텐트 (0) | 2011.10.30 |
| 안드로이드 다이얼로그 구현 (0) | 2011.09.20 |
| jquery, ajax (0) | 2011.08.25 |
| android sqlite 사용하기 (0) | 2011.08.17 |