private static final int MENU_LOGIN = 1;
private static final int MENU_SETTING = 2;
private static final int MENU_LOGOUT = 3;
private static boolean IsLogin = false;
// 초기 메뉴 생성시 호출
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (IsLogin)
menu.add(0, MENU_LOGOUT, 1, "로그아웃");
else
menu.add(0, MENU_LOGIN, 1, "로그인");
menu.add(0, MENU_SETTING, 2, "셋팅");
return true;
}
//메뉴 버튼 눌렀을 때 호출
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
menu.removeGroup(0);
if (IsLogin)
menu.add(0, MENU_LOGOUT, 1, "로그아웃");
else
menu.add(0, MENU_LOGIN, 1, "로그인");
menu.add(0, MENU_SETTING, 2, "셋팅");
return true;
}
//메뉴를 선택했을 때 각 메뉴마다 동작 처리
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Intent intent;
switch (item.getItemId())
{
case MENU_LOGIN :
/* 로그인 동작 */
IsLogin = true;
return true;
case MENU_SETTING :
/* 셋팅으로 이동 */
return true;
case MENU_LOGOUT :
/* 로그아웃 동작 */
IsLogin = false;
return true;
}
return false;
}
2010년 11월 29일 월요일
httpclient를 이용한 webpage 긁어오기
public void TestHttpClient ()
{
private StringBuilder sb;
HttpClient httpclient = new DefaultHttpClient();
localContext = new BasicHttpContext();
// Set HttpPost
HttpPost httppost = new HttpPost(LOGIN);
// Set Post Param
List<NameValuePair> paramList = new ArrayList<NameValuePair>();
paramList.add(new BasicNameValuePair("user_id", ID));
paramList.add(new BasicNameValuePair("password", PW));
httppost.setEntity(new UrlEncodedFormEntity(paramList));
// execute Post \ return Response
HttpResponse response = httpclient.execute(httppost, localContext);
// 200 OK ?
if(HttpStatus.SC_OK == response.getStatusLine().getStatusCode())
{
// Set HttpGet
httppost = new HttpPost(BOARD);
paramList = new ArrayList<NameValuePair>();
paramList.add(new BasicNameValuePair("id", BoardID));
paramList.add(new BasicNameValuePair("page", String.valueOf(PageNum)));
if(SearchKey != null)
{
if(SN)
paramList.add(new BasicNameValuePair("sn", "on"));
else
paramList.add(new BasicNameValuePair("sn", "off"));
if(SS)
paramList.add(new BasicNameValuePair("ss", "on"));
else
paramList.add(new BasicNameValuePair("ss", "off"));
if(SC)
paramList.add(new BasicNameValuePair("sc", "on"));
else
paramList.add(new BasicNameValuePair("sc", "off"));
String temp = URLEncoder.encode(SearchKey, "euc-kr");
paramList.add(new BasicNameValuePair("keyword", temp));
}
httppost.setEntity(new UrlEncodedFormEntity(paramList));
// execute Get \ return Response
response = httpclient.execute(httppost, localContext);
// 200 OK?
if(HttpStatus.SC_OK == response.getStatusLine().getStatusCode())
{
// Get Context
InputStream instream = response.getEntity().getContent();
BufferedReader reader
= new BufferedReader(new InputStreamReader(instream, "euc-kr"));
String line = null;
while(null != (line = reader.readLine()))
{
sb.append(line);
sb.append('\n');
}
System.out.println(sb);
}
}
}
실제 웹페이지 뷰어를 제작할 때 사용한 코드입니다.
paramList.add를 사용, 실제 url에 포함되는 값들을
넣어주면 해당되는 값을 가져오게 됩니다.
또한 한 번 로그인을 하면 localContext 객체 안에 쿠키 정보가 저장되므로
더이상 로그인을 하지 않아도 상관없습니다. (단 사이트마다 다를 수 있음)
자세한 것은 http://hc.apache.org/ 참조. 위 소스코드는 httpclient 3.x 기반
{
private StringBuilder sb;
HttpClient httpclient = new DefaultHttpClient();
localContext = new BasicHttpContext();
// Set HttpPost
HttpPost httppost = new HttpPost(LOGIN);
// Set Post Param
List<NameValuePair> paramList = new ArrayList<NameValuePair>();
paramList.add(new BasicNameValuePair("user_id", ID));
paramList.add(new BasicNameValuePair("password", PW));
httppost.setEntity(new UrlEncodedFormEntity(paramList));
// execute Post \ return Response
HttpResponse response = httpclient.execute(httppost, localContext);
// 200 OK ?
if(HttpStatus.SC_OK == response.getStatusLine().getStatusCode())
{
// Set HttpGet
httppost = new HttpPost(BOARD);
paramList = new ArrayList<NameValuePair>();
paramList.add(new BasicNameValuePair("id", BoardID));
paramList.add(new BasicNameValuePair("page", String.valueOf(PageNum)));
if(SearchKey != null)
{
if(SN)
paramList.add(new BasicNameValuePair("sn", "on"));
else
paramList.add(new BasicNameValuePair("sn", "off"));
if(SS)
paramList.add(new BasicNameValuePair("ss", "on"));
else
paramList.add(new BasicNameValuePair("ss", "off"));
if(SC)
paramList.add(new BasicNameValuePair("sc", "on"));
else
paramList.add(new BasicNameValuePair("sc", "off"));
String temp = URLEncoder.encode(SearchKey, "euc-kr");
paramList.add(new BasicNameValuePair("keyword", temp));
}
httppost.setEntity(new UrlEncodedFormEntity(paramList));
// execute Get \ return Response
response = httpclient.execute(httppost, localContext);
// 200 OK?
if(HttpStatus.SC_OK == response.getStatusLine().getStatusCode())
{
// Get Context
InputStream instream = response.getEntity().getContent();
BufferedReader reader
= new BufferedReader(new InputStreamReader(instream, "euc-kr"));
String line = null;
while(null != (line = reader.readLine()))
{
sb.append(line);
sb.append('\n');
}
System.out.println(sb);
}
}
}
실제 웹페이지 뷰어를 제작할 때 사용한 코드입니다.
paramList.add를 사용, 실제 url에 포함되는 값들을
넣어주면 해당되는 값을 가져오게 됩니다.
또한 한 번 로그인을 하면 localContext 객체 안에 쿠키 정보가 저장되므로
더이상 로그인을 하지 않아도 상관없습니다. (단 사이트마다 다를 수 있음)
자세한 것은 http://hc.apache.org/ 참조. 위 소스코드는 httpclient 3.x 기반
onListItemClick 과 setOnClickListener
onListItemClick - ListActivity에서 사용되는 함수. ListView의 하나의 List를 Click했을 시 반응
setOnClickListener - View Listener. 하나의 View를 클릭했을 시 반응
만약 커스텀 ListView를 생성했을 시,
열 전체 Click에 관한 동작은 onListItemClick 함수에,
열 내부의 View 하나하나에 대한 Click은 setOnClickListener 함수에 구현.
setOnClickListener - View Listener. 하나의 View를 클릭했을 시 반응
만약 커스텀 ListView를 생성했을 시,
열 전체 Click에 관한 동작은 onListItemClick 함수에,
열 내부의 View 하나하나에 대한 Click은 setOnClickListener 함수에 구현.
2010년 11월 20일 토요일
북한산 둘레길 탐방기
일시 : 2010년 10월 15일
트레킹코스 : 솔샘길 -> 흰구름길 -> 순례길
소요시간 : 12시 경 출발 / 4시 도착
사용카메라 : NexusOne
트레킹코스 : 솔샘길 -> 흰구름길 -> 순례길
소요시간 : 12시 경 출발 / 4시 도착
사용카메라 : NexusOne
회사에서 단체로 북한산 둘레길을 갔다왔습니다.
모니터와 키보드에서 벗어나 흙을 밟고 풀 내음을 맡으며
나무 그늘 밑을 거닐다 보니 상쾌한 기분이 너무 좋더군요 ^^
본사에서 10시에 모여 출석체크를 하고
준비물을 챙긴 뒤 각자 북한산을 향해 출발했습니다.
저희 일행은 구로디지털단지역에서
2호선 내부순환선을 타고 동대문운동장에서
4호선으로 환승, 길음역에서 내려
143번 버스를 탔습니다. 버스 종점에서 하차 후
조금 올라가니 이 곳이 나오더군요.
북한산 탐방안내소(정릉) |
챙겨온 김밥으로 간단한 점심(?)을 먹은 뒤
모두가 도착할 때까지 대기했습니다.
옆에 있던 나무에서 가을 향기가 물씬 풍기네요
자 이제 출발입니다 ㅋㅋ
이건 누구 발?? |
흠 초상권(?)때문에 안면이 나온 사진을
빼다보니 내용이 끊기네요 이런...
공사중인 듯한 전망대가 있었는데 용기를 내서 올라갔습니다.
확실히 전망은 좋더군요. ㅋ 하지만 문제가...
원래 파노라마 용으로 쓰려던 사진인데...제대로 분할 못한 것도 있지만
첫번째와 두번째 사진은 손가락이 찬조출현해주셔서...그냥 못 쓰는 겁니다 크흑
걷기 운동이란 이런 것이다!! |
가장 마음에 드는 컷! |
솔샘길과 다르게 흰 구름길은 무척이나 길더군요.
길을 잘못 든게 아닐까 오해할 정도로 말이죠.
하지만 오며 가며 함께 했던 둘레길 인증(?) 마크!!
이 녀석이 있었기에 초행길임에도
길을 잃지않고 무사히 완주할 뻔 했습니다만...
여기서부터는 순례길... 가장 경치가 좋았습니다! |
목적지인 솔밭공원이 얼마 남지 않았군요 |
손가락 님 찬조출현...하아 |
이 숲까지는 길을 잘 찾아갔으나 주택가에 들어섰을 때 순간
인증마크를 보지 못했는지 다른 길로 들어섰고...
결국은 큰 도로로 나와서 지도를 보면서 공원으로 바로 향했습니다 ㅎ
도착 인증샷!! |
전체 참여 인원 중 가장 먼저 도착했습니다.
쉬지 않고 걸은 덕분이긴 하지만...
그런데 상품 같은 건 없더군요 쳇
솔밭공원은 이름대로 소나무가 참 많았는데 분위기가 괜찮았습니다.
어리숙한 촬영실력으로 인해 제대로 찍지 못한 게 아쉽네요 ㅜ ㅠ
열심히 공 차고 놀던 꼬맹이들... |
어찌됐던 4시간여를 지나 무사히 목적지에 도착했습니다.
오랫만에 몸을 움직이니 살아있다는 것을 느꼈다고 해야하나??
하지만 저녁 먹으러 1km이상을 걸었던 건 확실히 힘들었습니다.
배터리도 다 되어서 맛있는 고기 사진도 못 찍었구 흑흑
다음엔 혼자서 천천히 돌아봐야겠네요.
수많은 코스 중 겨우 3코스만을 돌아봤으니 말이죠.
...뭔가 바로 앞의 글과 결말이 반대가 되는 것 같긴한데...상관없겠죠 훗
피드 구독하기:
글 (Atom)